具有多个使用者的 JMS 队列
我有一个带有HornetQ的JBoss-6服务器和一个队列:
<queue name="my.queue">
<entry name="/queue/test"/>
</queue>
有不同的使用者(在不同的计算机上)连接到此队列,但一次只有一个使用者处于活动状态。如果我关闭此使用者,则消息将立即由其他使用者之一处理。
由于我的消息有一些耗时的处理,我希望多个使用者同时处理其唯一消息。
我记得在早期版本的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();
和 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) {}
}
}