У меня есть сервер JBoss-6 с HornetQ и одна очередь:
<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) {}
}
}