【问题标题】:Adding delay on jms message processing在 jms 消息处理上添加延迟
【发布时间】:2017-05-27 07:13:16
【问题描述】:

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

在某些情况下,Atomikos 已提交到队列,但休眠提交仍在进行中,同时 get 查询已从接收器触发。我试图查找是否有方法可以在 XA 事务中指定提交顺序,但答案似乎不读书this

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

【问题讨论】:

    标签: hibernate activemq xa atomikos


    【解决方案1】:

    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);

    【讨论】:

    • 是的,这增加了请求的延迟,但我不确定这是否回答了关于引入滞后的问题,这是一个好主意。
    • 有没有办法在JBOSS中指定xa的参与者的提交顺序?我知道 XA 没有指定参与者的提交顺序。但是像 websphere 这样的应用程序服务器定义了提交顺序,其中 jdbc 总是在 JMS 之前提交。有什么可以帮助订购提交顺序,由 atomikos 或 XA 或 Jboss 提供的任何东西。
    • 在我的例子中是message.setLongProperty("_AMQ_SCHED_DELIVERY", 5000);
    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    • 2017-02-06
    • 2014-09-27
    • 2014-02-15
    相关资源
    最近更新 更多