相关疑难解决方法(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强制传递消息顺序

我已经使用HornetQ设置了一个jms服务器作为JMS提供程序(Queue).

我有一个应用程序作为生产者,另一个(不同的计算机)作为消费者.

我知道JMS规范并不保证交付顺序,但我正在寻找一种方法:完全按照发送的顺序接收消息,即使它是特定于提供者的.

有任何想法吗?

java jms hornetq

8
推荐指数
1
解决办法
2528
查看次数

标签 统计

hornetq ×2

java ×2

jms ×2

jboss6.x ×1