我正在使用Jboss 6.1和Hibernate以及HornetQ。 如果我在我的数据库中操作数据并向Queue添加一条消息,该消息依赖于之前我不希望在我的数据实际提交到数据库之前处理该消息之前更改的数据。 因此,为了避免竞争条件,我想将HornetQ引入我的容器管理事务中,这样当全局事务也被提交时,消息才会“提交”到队列中。
这可能吗?任何提示?
答案 0 :(得分:2)
有可能。 您将需要使用XA事务,因此您将获得2阶段提交:
我发现,验证您实际上正在运行2PC事务的最简单方法是:
如果事务是XA 2PC,那个字段(Hashtable)将包含2个XAResource作为键,一个用于JMS,另一个用于JDBC。
我不知道您最熟悉哪种架构,但我认为容器管理的事务无状态会话EJB将是最简单的方法。