首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多个使用者的JMS队列

具有多个使用者的JMS队列
EN

Stack Overflow用户
提问于 2011-08-10 09:37:01
回答 2查看 18.3K关注 0票数 15

我有一个带有HornetQ的JBoss-6服务器和一个队列:

代码语言:javascript
复制
<queue name="my.queue">  
    <entry name="/queue/test"/>  
</queue>

有不同的使用者(在不同的机器上)连接到这个队列,但一次只有一个使用者处于活动状态。如果我关闭了这个使用者,消息就会立即由另一个使用者处理。

因为我的消息有一些耗时的处理,所以我希望多个使用者同时处理他们唯一的消息。

我记得在早期版本的JBoss中也有类似的情况,在这些版本中,这种设置没有出现问题。在Jboss-6中,消息传递系统运行良好--除了上面描述的问题。这个问题类似于Are multiple client consumers possible in hornetq?,但这个场景与我的不相似。

更新1:如果我关闭(STRG+C)一个消费者,则会有一个短暂的超时(直到服务器识别丢失的消费者),直到下一个使用者收到消息为止。

更新2:代码段

代码语言:javascript
复制
VoidListener ml = new VoidListener();
QueueConnectionFactory qcf = (QueueConnectionFactory)
                             ctx.lookup("ConnectionFactory");
QueueConnection conn = qcf.createQueueConnection();
Queue queue = (Queue) ctx.lookup(queueName);
QueueSession session = conn.createQueueSession(false,
                                               QueueSession.AUTO_ACKNOWLEDGE);

QueueReceiver recv = session.createReceiver(queue,"");
recv.setMessageListener(ml);
conn.start();

MessageListerner:

代码语言:javascript
复制
public class OlVoidListener implements MessageListener
{
  public void onMessage(Message msg)
  {
    counter++;
    logger.debug("Message ("+counter+") received");
    try {Thread.sleep(15*1000);} catch (InterruptedException e) {}
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-10 14:43:19

在一个队列中有多个使用者时,消息在消费者之间是负载平衡的。

由于您有一些时间消耗消息,您应该通过设置使用者窗口大小来禁用缓冲。

在hornetQ上有一个关于发行版的示例,介绍如何禁用客户端缓冲并更好地支持慢速用户。(慢消费者是有时间处理消息的消费者)

消息系统将预取/预读消息到客户端缓冲区,以加快处理速度并避免网络延迟。如果您有快速处理队列和单个使用者,则这不是问题。

JBoss消息传递在连接工厂提供了慢用户选项,而hornetq提供了消费者窗口大小。

大多数消息系统将为您提供启用或禁用客户端预取的方法。

票数 15
EN

Stack Overflow用户

发布于 2011-08-10 10:00:10

对不起,我不明白到底是什么问题。我们在2.0.0.GA版本和2.2.2.Final版本中使用了hornetq。在这两种情况下,基于队列的负载平衡都很好。如果要为一个队列定义多个使用者,并且它们都处于活动状态,则消息将自动在它们之间分发。第一条信息给消费者A,第二条给消费者B,第三条给消费者C等等。多个使用者的队列就是这样工作的--这是免费的负载平衡:)当您关闭一个使用者时,其他人会收到更多的消息,这是正常的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7008664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档