相关疑难解决方法(0)

具有多个使用者的JMS队列

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

<queue name="my.queue">  
    <entry name="/queue/test"/>  
</queue>
Run Code Online (Sandbox Code Playgroud)

有连接到这个队列中一个不同的消费者(在不同的机器),但只有一个单一的消费者是活动的时间.如果我关闭此消费者,消息将立即由其他消费者处理.

由于我的消息有一些耗时的处理,我希望多个消费者同时处理它们的唯一消息.

我记得早期版本的JBoss中有类似的设置,这种设置没有问题.在Jboss-6中,消息传递系统运行良好 - 除了上述问题.这个问题与hornetq中的多个客户端消费者类似吗?,但情景与我的情况不同.

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

更新2:代码段

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();
Run Code Online (Sandbox Code Playgroud)

和MessageListerner:

public class OlVoidListener implements MessageListener
{
  public void onMessage(Message msg)
  {
    counter++;
    logger.debug("Message ("+counter+") received");
    try {Thread.sleep(15*1000);} catch (InterruptedException e) {}
  }
}
Run Code Online (Sandbox Code Playgroud)

java jms hornetq jboss6.x

15
推荐指数
1
解决办法
2万
查看次数

标签 统计

hornetq ×1

java ×1

jboss6.x ×1

jms ×1