在 jms 消息处理上添加延迟

Adding delay on jms message processing

我正在将 atomikos 与 Hibernate 和 ActiveMQ 一起使用。我的事务涉及将消息提交到数据库并发送到队列。 JMS reveiver 然后读取消息并从 db 调用 get。

在某些情况下,Atomikos 已提交到 Queue 但 hibernate 提交仍在进行中,同时从 receiver.I 触发 get 查询试图找到我们是否可以在 XA 中指定提交顺序交易但答案似乎没有阅读 this.

所以我在想有没有一种方法可以在消息处理中增加一些延迟,以便消息仅在提交成功 5 秒后被提取。

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

2 件你应该做的事:

首先是在 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);