Есть ли способ использовать основанную на событии входящую конечную точку для соединения с брокером JMS (ActiveMQ) - PullRequest
1 голос
/ 23 сентября 2019

Я использую ActiveMQ-брокер для создания сообщения, которое будет использоваться входящей конечной точкой JMS WSO2 ESB.Производитель создает сообщение с набором заголовков JMSXGroupID, который я хочу использовать для группировки связанных сообщений так, чтобы они (связанные сообщения) обрабатывались одним и тем же узлом.

Способ, документированный для JMS, заключается в том, что брокер отправляет сообщение с установленным JMSXGroupId узлу, который ранее обрабатывал сообщение с тем же JMSXGroupId, если этот узел подключен.Однако, поскольку ESB WSO2 использует входящую конечную точку на основе опроса, посредник не идентифицирует подключенный узел и отправляет сообщение следующему доступному узлу, который приходит для опроса сообщения.

Есть ли способ настроить входящую конечную точку JMS как событиеНа основе входящей конечной точки вместо опроса на основе входящей конечной точки.Альтернативно, есть ли способ настроить группировку на основе JMSXGroupID в WSO2 ESB?

Редактировать --- Версии используемых продуктов

  • WSO2 ESB: WSO2 EI 6.5.0выпуск

  • Брокер ActiveMQ: 5.15.9

1 Ответ

1 голос
/ 26 сентября 2019

Я могу решить эту проблему, используя стратегию кэширования WSO2 ESB.Уровень кэширования был установлен на «1» в моей конфигурации конечной точки JMS Inboud, что означает, что кэшируется только соединение.т.е.

<parameter name="transport.jms.CacheLevel">1</parameter>

Когда я изменил это значение на '3', соединение JMS, сеанс и потребитель JMS все три кэшируются, тем самым не создавая нового потребителя для каждого сообщения.

<parameter name="transport.jms.CacheLevel">3</parameter>

Это привело к тому, что брокер идентифицировал потребителя и выполнил балансировку на основе группы сообщений JMS, тем самым решив проблему.

...