hornetq为邮件组延迟重新传递
我想以某种方式延迟整个邮件组的邮件。hornetq为邮件组延迟重新传递
问题是属于每个消息组的所有消息都必须按照它们发布的顺序进行处理。如果其中一条消息不能被使用 - 我们想延迟它,并且延迟同一消息组中的剩余消息。我不想阻止消费者 - 它应该可以自由地处理来自其他组的消息。
如何做到这一点?
回答:
我不能说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。
以上是 hornetq为邮件组延迟重新传递 的全部内容, 来源链接: utcz.com/qa/266050.html