gpt4 book ai didi

java - 发送到 JMS 队列的消息将仅由单个消费者消费?

转载 作者:行者123 更新时间:2023-12-02 11:50:04 26 4
gpt4 key购买 nike

发送者将消息发送到队列的情况,例如 message1sender1 发送到队列。现在,名为 consumer1 的消费者连接到队列并读取消息 message1

还有另一个名为 consumer2 的消费者。但消息 message1 已被 consumer1 使用,因此它无法供 consumer2 使用。

当下一条消息到达队列时,如果consumer2consumer1之前读取队列,则可能会收到该消息。

这是否意味着一个消费者先于另一个消费者读取队列,以便从队列获取第一条可用消息?

最佳答案

这是 JMS 中队列的本质,消息被发送给一个消费者,一旦被确认,它们就消失了,下一个消费者可以获得下一条消息,依此类推。这通常称为竞争消费者或负载平衡。消费者可以在作业或工作项排队时共享工作,当与队列中的项关联的工作可能需要大量时间时,这可以实现更高的吞吐量。

根据消息代理的不同,有一些选项可以使消费者独占,这样只有该消费者才能从队列中读取消息,而其他消费者则坐下来等待独占消费者离开,这使得它们成为某种备份。

其他选项是使用 Apache Camel 之类的工具将给定消息路由到多个队列,或者使用 AcitveMQ 虚拟主题将消息发送到某个主题,然后将该消息排入特定的消费者队列。

解决方案取决于您正在使用的经纪商以及您想要解决的问题,而您在问题中没有真正明确说明这些问题。

关于java - 发送到 JMS 队列的消息将仅由单个消费者消费?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47951556/

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