Почему QueueSession может создать только один получатель в JMS? - PullRequest
2 голосов
/ 15 апреля 2011

Я могу заставить некоторых отправителей отправлять несколько сообщений, но когда я создаю двух получателей за один сеанс, первый работает, а второй блокируется. В отладке я вижу размер списка очередей, который получил второй получатель, равный нулю. Я обнаружил, что сеанс создан для одного потока, я не знаю, связана ли эта проблема с небезопасным потоком?

Я использую реализацию ActiveMQ.

1 Ответ

2 голосов
/ 18 апреля 2011

Сеанс JMS является абсолютно однопоточным.Таким образом, он может иметь только один активный приемник.У вас есть 2 варианта:

  1. Использовать одно соединение с несколькими сеансами, каждый сеанс имеет получателя.Соединения являются поточно-ориентированными, и вы можете создавать множество сеансов из этих отдельных соединений.
  2. ActiveMQ предоставляет вам ряд опций, касающихся мультиплексирования нескольких получателей , поэтому вместо нескольких получателей вы можете захотетьсосредоточьтесь на одном, но используйте возможности ActiveMQ для создания виртуальных пунктов назначения, которые будут направлять все сообщения, которые вы хотите, через один получатель.

См. этот вопрос .

...