在jms消息处理上添加延迟

时间:2017-05-27 07:13:17

标签: hibernate activemq xa atomikos

我正在使用带有Hibernate和ActiveMQ的atomikos。我的事务涉及,消息被提交到DB并发送到队列。然后JMS reveiver读取消息并从db调用get。

有些情况下Atomikos已经提交到Queue但是hibernate提交仍在进行中,同时get接收器触发了查询。我试图找到是否有办法在XA事务中指定提交顺序但是答案似乎不读this

所以我认为有一种方法可以在消息处理中添加一些延迟,这样只有在提交成功的时候5秒后才会消息。

1 个答案:

答案 0 :(得分:2)

activemq支持延迟消息,请参阅http://activemq.apache.org/delay-and-schedule-message-delivery.html

你应该做的两件事:

首先在activemq.conf中添加schedulerSupport

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" schedulerSupport="true">

然后在发送时添加AMQ_SCHEDULED_DELAY属性。

喜欢textMessage.setLongProperty("AMQ_SCHEDULED_DELAY", 5000);