簡體   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