在使用 JMS 连接器的 Mule 4 中如何删除 RFH Header

In Mule 4 using JMS Connector how to remove the RFH Header

我正在使用 JMS 连接器连接到 IBM MQ。如果我使用 IBM MQ 连接器,我可以选择 (targetClient="NO_JMS_COMPLIANT") 从消息中禁用 RFH Header。我怎样才能使用 JMS 连接器实现相同的目的。我的 JMS 配置如下所示

<jms:config name="JMS_Config" doc:name="JMS Config" doc:id="b675becf-06f3-4847-bb95-4f468d5353ea" >
    <jms:generic-connection specification="JMS_2_0" connectionFactory="WMQ_ConnectionFactory" />
</jms:config>

连接工厂如下所示:

<bean id="WMQ_ConnectionFactory" class="com.ibm.mq.jms.MQConnectionFactory" name="WMQ_ConnectionFactory">
    <property name="transportType" value="1" />
    <property name="hostName" value="MQ-SLQ01"/>
    <property name="port" value="1414"/>
    <property name="queueManager" value="SLQ01"/>
    <property name="channel" value="*******"/>
</bean>

JMS 连接器配置如下所示:

<jms:publish-consume doc:name="Publish consume" doc:id="b1d40cc6-deb0-42f0-aa50-4b230d843794" config-ref="JMS_Config" destination="P2.REQUEST" sendCorrelationId="ALWAYS">
    <jms:message >
        <jms:reply-to destination="P2.REPLY" />
    </jms:message>
</jms:publish-consume>

我试过用 P2.REQUEST?targetClient=1 添加请求 queue 名称。我看不到任何变化。

我怀疑 JMS 连接器是否允许 select 特定于代理 (IBM MQ) 的非 JMS 兼容模式。它是一个通用连接器,不提供经纪人特定的功能。您应该使用已经提供该特定功能的 IBM MQ 连接器。

您可以采取的替代措施是使用 queue 上的设置禁用 RFH2 header。

ALTER QLOCAL(P2.REQUEST) PROPCTL(NONE)

这将在将消息传递给任何不提供消息句柄的应用程序之前去除消息的所有属性 (RFH2 header)。