gpt4 book ai didi

java - ActiveMQ 中的延迟消息

转载 作者:行者123 更新时间:2023-12-02 09:22:18 31 4
gpt4 key购买 nike

我想延迟向我的 JMS 客户端发送消息。我正在使用 AMQ 5.8.0。在文档中,它指出将配置设置 schedulerSupport 设置为 true (默认情况下为 false)

<broker xmlns="http://activemq.apache.org/schema/core"
persistent="false"
dedicatedTaskRunner="false"
schedulerSupport="true"
brokerName="mybroker">

这是我用于生成/使用我的记录的测试代码

TextMessage sendMessage = producerSession.createTextMessage();
sendMessage.setStringProperty(Constants.PARAM_ID, newUniqueId);
long delay = 20 * 1000;
sendMessage.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay); //sets delay
sendMessage.setJMSCorrelationID(newUniqueId);
producer.send(sendMessage);

Message m = consumer.receive(); //get message. This should be null
if(m != null)
{
id = m.getStringProperty(Constants.PARAM_ID); //I get the message well before 20 sec delay
}

我可以在jetty浏览器的预定选项卡下看到我的记录。消息应延迟 20 秒。但是,当进行 consumer.receive() 调用时,我在 20 个延迟到期之前就得到了记录。

我是否误解了这种延迟是如何运作的?我不希望记录在一段时间内可用。

最佳答案

您必须使用 ScheduledMessage.AMQ_SCHEDULED_DELAY 属性,即

sendMessage.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);

并启用持久性(默认 = true,如果未设置):

<broker persistent="true">

关于java - ActiveMQ 中的延迟消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58609188/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com