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

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

2
Hesey 15 Апр 2011 в 14:32

1 ответ

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

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

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

2
Community 23 Май 2017 в 15:22