【发布时间】:2013-01-13 17:51:50
【问题描述】:
上下文是:
- 生产者(JTA 事务 PT)正在向 JMS 队列发送消息并进行 DB 更新;
- 消费者(JTA事务CT)监听同一个队列并在收到消息时读取DB;
- 应用服务器 - WebLogic、DB - Oracle。
我观察到,有时 CT 不(还?)能够看到 PT 的数据库更改,如果已收到相应的 JMS 消息(PT 已提交?)。
JTA 似乎无法保证这种一致性(这在 Jurgen Holler 的演讲“性能的交易选择”中也得到了证实)。
避免此类问题的最佳方法是什么(除了明显的 - 不使用 JTA)?
谢谢。
【问题讨论】:
-
只是另一个想法:由于 Weblogic 和 Oracle 已经被使用...您不妨添加 Coherence(数据库的分布式内存缓存)。您在更新数据库的同时更新缓存(直写式缓存),因此缓存具有可供消费者立即使用的最新值(或至少减少延迟)。
-
我去看看,谢谢
标签: java jms jta distributed-transactions xa