有没有办法为 JMS (ActiveMQ) 代理连接使用基于事件的入站端点

Is there a way to use Event Based Inbound Endpoint for JMS (ActiveMQ) broker connection

我正在使用 ActiveMQ 代理生成消息以供 WSO2 ESB JMS 入站端点使用。生产者使用 JMSXGroupID header 集生成消息,我希望使用它来对相关消息进行分组,以便它们(相关消息)由同一节点处理。

它为 JMS 记录的方式是代理将发送带有 JMSXGroupId 集的消息到先前处理具有相同 JMSXGroupId 的消息的节点,如果该节点已连接。然而,由于 WSO2 ESB 使用基于轮询的入站端点,代理不会识别连接的节点并将消息发送到下一个可用的节点来轮询消息。

有没有办法将 JMS 入站端点配置为基于事件的入站端点而不是基于轮询的入站端点。或者,有没有办法在 WSO2 ESB 中配置基于 JMSXGroupID 的分组?

编辑--- 使用的产品版本

我可以使用 WSO2 ESB 的缓存策略来解决这个问题。在我的 JMS Inboud Endpoint 配置中缓存级别设置为“1”,这意味着仅缓存连接。 即

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

当我将此值更改为“3”时,JMS 连接、会话和 JMS 消费者都被缓存,因此不会为每条消息创建新的消费者。

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

这导致代理识别消费者并执行基于 JMS 消息组的平衡,从而解决了问题。