繁体   English   中英

Java 消息驱动 Bean(MDB) 同步数据库更新问题

[英]Java Message Driven Bean(MDB) simultaneous database update issue

我有一个 java 批处理,它将消息处理发布到 MQ。 与队列关联的 MDB 处理消息。 每条消息将有 10 条记录。 我需要更新一个数据库表来跟踪处理的记录、成功和失败。 每个批次运行的表中只有一行。 所以问题是,由于 MDB 的多个实例都在尝试更新,我们面临着并发问题。 我们也尝试了行级锁定。 但问题仍然存在。

我正在寻找一种解决方案,我可以跟踪 java 端的计数器,然后在达到某个阈值后进行一次更新。 假设发布了 500 条消息。 每条消息处理 10 条记录。 MDB 应在处理完此消息中的所有记录后更新此计数器。 然后计数器将生成一个线程(如果满足阈值)将更新数据库。

请让我知道我可以使用哪些选项。

应用服务器 - Z/OS 上的 WAS 5.6、DB2 9.1。 通过 SP 访问 DB2。

谢谢!

您是否尝试过完全在数据库服务器上进行更新? 例如:

UPDATE COUNT_TABLE SET COUNTER = COUNTER + 1 WHERE ...

数据库服务器应该能够像这样管理并发更新语句。

最简单的解决方案是只运行一个 MDB 实例,您的并发问题就会消失。

这会慢一点,因为您将一次执行 10 次数据库更新,而不是您建议的 500 次,但除非这是一个问题,否则我会保持简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM