gpt4 book ai didi

java - Hornetq 延迟重新传递消息组

转载 作者:行者123 更新时间:2023-12-01 04:46:47 24 4
gpt4 key购买 nike

我想以某种方式延迟整个消息组的消息。

问题是,属于每个消息组的所有消息都必须按照它们发布的顺序进行处理。如果其中一条消息无法被使用 - 我们希望延迟它并延迟同一消息组中的其余消息。我不想阻止消费者 - 它应该可以自由地处理来自其他组的消息。

如何做到这一点?

最佳答案

我不能说 JMS 有任何好的内置支持这些东西。使用单个“独立”消息一切都会变得更容易,但是您可以尝试一件事。

对这些消息(在该组中)进行延迟传送。

// Send to same queue once again, but delay 60 sec
if( isGroupMarkedForRedelivery(message.getStringProperty("JMSXGroupID"))){
message.setLongProperty("_HQ_SCHED_DELIVERY", System.currentTimeMillis() + 60000);
producer.send(message); // producer sends to process queue (again).
}

请注意,如果您需要按相同的顺序排列它们,那么您可能不应该在发送和/或接收中使用并发。您当然可以添加更多逻辑来适应您的情况。

您可能需要确保 isGroupMarkedForRedelivery 在少于“延迟”的时间后为特定组返回 false。

关于java - Hornetq 延迟重新传递消息组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15710539/

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