如何通过 java Compute 节点覆盖 JMSReceive 节点的 MessageCorrelationIDSelector

How to override MessageCorrelationIDSelector for JMSReceive node via java Compute node

我需要从 JMS 队列中读取消息并根据流中间的 JMSCorrelationID 过滤消息。所以我使用了 JMSReceiveNode。 JMSCorrelationID 是动态的。所以我尝试通过 java 计算节点覆盖 MessageCorrelationIDSelector,如下所示。我在本地环境中添加了correlationid树。

我的java计算节点代码:

localEnv.getRootElement().createElementAsLastChild(MbElement.TYPE_NAME, "JMS", null). createElementAsLastChild(MbElement.TYPE_NAME, "Receive", null). createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "MessageCorrelationIDSelector", dynamicID);'

但是我收到 JMS destinaiton not found 异常。如果我从本地环境中删除本地 MessageCorrelationIDSelector 它工作正常。

本地环境树如下

'LocalEnvironment
 JMS
         Receive                    MessageCorrelationIDSelector:CHARACTER:123457
LocalEnvironment
JMS
        Receive
                MessageCorrelationIDSelector:CHARACTER:='1111'
                Source:CHARACTER:createArrangementQueue
                QCF:CHARACTER:jms/RemoteConnectionFactory
                JNDIBindingLocation:CHARACTER:http-remoting://localhost:9089
                InitialContextFactory:CHARACTER:org.jboss.naming.remote.client.InitialContextFactory
                JMSProvider:CHARACTER:jboss71JMS

正如@Jérém 提到的那样,它工作正常。我们需要像上面那样覆盖所有属性。