【发布时间】:2014-07-17 17:46:03
【问题描述】:
Snapshot下方是当前application flow.
当前流向
当user Logged 在这些multiple deployments 中时,则相应的SMSAgent(java class) insert user info in database、SMSHelper 是一个java Scheduler,它从其本地队列中的数据库中读取数据,send SMS 然后update user status in database.
此流程存在问题
现在,在上述场景中,Multiple SMS is getting send to Single User 因为数据库是通用的,通知助手都从数据库中获取联系方式(可能是通用的)并向该用户发送短信。
现有解决方案
目前,此问题的解决方案仅在 oracle 11g 中可用,其中选择查询具有更新跳过锁定支持。
期待
如何在应用程序级别而不是查询级别对所有数据库实现相同的目标?
【问题讨论】:
-
您可以添加一个额外的列来指示已发送短信,这样如果 onc 助手类发送短信,它将更新该列,然后其他助手类可以在发送短信之前检查该列
-
@coreJavare 我想你还没有读过那个助手更新数据库中的用户状态。
-
SMSHelper 应检查已发送标志“就在之前”发送短信的状态,以免发送其他短信
-
@Mat 谢谢,现在还好吗。
-
@coreJavare 假设两个助手同时检查状态,那么在这种情况下也会发送多条短信。
标签: java database multithreading oracle11g multi-tenant