上下文是:
- 生产者(JTA 事务PT)正在向 JMS 队列发送消息并进行数据库更新;
- 消费者(JTA 事务CT)在同一队列上侦听并在收到消息时读取 DB;
- 应用程序服务器 - WebLogic,DB - Oracle。
我观察到,有时CT(还没有?)能够看到PT的 DB 更改,如果已经收到相应的 JMS 消息(PT已提交?)。
似乎 JTA 不能保证这种一致性(这在 Jurgen Holler 的演示文稿“Transaction Choices for Performance”中也得到了证实)。
避免此类问题的最佳方法是什么(除了明显的 - 不使用 JTA)?
谢谢。