Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Activemq AMQ';什么工作?在重新交付过程中,它是否完全容纳消费者?_Activemq - Fatal编程技术网

Activemq AMQ';什么工作?在重新交付过程中,它是否完全容纳消费者?

Activemq AMQ';什么工作?在重新交付过程中,它是否完全容纳消费者?,activemq,Activemq,假设我们只有一个消费者,并且我们的重新传递策略将允许在相当长的时间内重新传递消息 我尝试过一个场景,在这个场景中我发送了两条消息(不同类型),一条消息被设计为重新发送,另一条消息可以正常使用 如果正常消息的传递时间晚于重新传递的消息,则它似乎会被阻止。 在重新传递的邮件尝试多次达到最大重新传递次数之前,不会使用该邮件。这将导致一种情况,即易于消费的消息必须等待很长时间才能被消费 我想知道AMQ再肝是如何工作的。当一条消息在消费者中重新传递时,另一条消息可以发送到此消费者,直到当前消息被消费或超时

假设我们只有一个消费者,并且我们的重新传递策略将允许在相当长的时间内重新传递消息

我尝试过一个场景,在这个场景中我发送了两条消息(不同类型),一条消息被设计为重新发送,另一条消息可以正常使用

如果正常消息的传递时间晚于重新传递的消息,则它似乎会被阻止。 在重新传递的邮件尝试多次达到最大重新传递次数之前,不会使用该邮件。这将导致一种情况,即易于消费的消息必须等待很长时间才能被消费

我想知道AMQ再肝是如何工作的。当一条消息在消费者中重新传递时,另一条消息可以发送到此消费者,直到当前消息被消费或超时(到DLQ)


有人能帮忙吗?谢谢,

ActiveMQ在重新传递消息时最关心的问题是遵守队列上的消息顺序

给定两条消息A和B,它们被发送到具有定义的重新交付策略(如您所述)的队列:如果客户端处理A失败,则该消息将被放回队列,并且在成功使用A之前,不会使用其他消息

查看该部分了解更多详细信息



如果回答了您的问题,请记住投票支持此响应。

在这种情况下,可以将ActiveConnectionFactory设置为onBlockingRedelivery。
在de中查找详细信息:

是的,我知道AMQ将维护队列中的订单。我想要的是,A的重新传递延迟不应该阻止消息B的使用,即使消息A是要使用的队列上的第一个消息。。我也不希望消息A的延迟导致任何其他消息延迟。即使我们在客户端定义了许多消费者,但所有消费者都有可能使用相同的消息类型,即a(设计为多次重新发送,并且根据重新发送策略,这将需要相当长的时间,可能需要1小时),这将导致我们的应用程序效率低下。谢谢Jake,Jakub是对的,不过我想补充一点。华为,你的担忧是正确的,但你会希望降低预回迁的频率,以避免出现你所描述的情况。这样,原本可能被阻止到一个消费者,但可能被预取的消息就可以被发送到其他消费者。