在 mule 流之间接收在持久主题订阅者中排队的所有消息
Receive all message queued in durable topic subscriber in between mule flow
我想检索在 mule 流之间的持久主题订阅者中排队的所有消息。我曾尝试使用 Mule 请求者,但对于 JMS inbount 持久主题订阅者,我们必须证明 "durableName" 属性。它在入站端点上工作正常,但无法弄清楚如何在流程执行之间调用它。
请在下面找到代码
<jms:activemq-connector name="Active_MQ" clientId="xyz-001" password="admin" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ" persistentDelivery="true"/>
<mulerequester:config name="Mule_Requester" doc:name="Mule Requester"/>
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="activemqtestFlow1">
<http:listener config-ref="HTTP_Listener_Configuration" path="/getTopicMessages" doc:name="HTTP"/>
<mulerequester:request-collection config-ref="Mule_Requester" resource="jms://testTopic?connector=Active_MQ" doc:name="Mule Requester"/>
<foreach doc:name="For Each">
<logger message="subscriber two pay load" level="INFO" doc:name="Logger"/>
</foreach>
</flow>
以下流程工作正常,但我想在 JMS 主题的 mule 流程调用之间实现,
<flow name="activemqtestFlow1">
<jms:inbound-endpoint connector-ref="Active_MQ" doc:name="JMS" topic="testTopic" durableName="xyz-001">
<jms:transaction action="NONE"/>
</jms:inbound-endpoint>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>
请提出解决方法。
mule 请求者的持久主题订阅者可以通过创建通用端点并将主题、持久、持久名称属性传递给它来实现。
这种方法的唯一问题是,studio 在使用我们需要忽略和部署应用程序的属性元素时会显示验证错误。
端点会像
<endpoint name="durablesubscriberEndpoint" connector-ref="Active_MQ" address="jms://testTopic" doc:name="Generic">
<property value="true" key="durable"/>
<property value="subscriber-name" key="durableName"/>
<property value="true" key="topic"/>
</endpoint>
骡子请求者可以被称为
<mulerequester:request-collection config-ref="Mule_Requester" resource="durablesubscriberEndpoint" doc:name="Mule Requester"/>
它很有魅力...!!
另一种使它更通用和动态的方法可以使用以下
<set-variable variableName="resource" value="jms://#[message.inboundProperties.activeMQTopic]?connector=Active_MQ&durable=true&durableName=#[message.inboundProperties.'subscriber-name']&topic=true" doc:name="Variable"/>
<mulerequester:request-collection doc:name="Mule Requester" config-ref="Mule_Requester" resource="#[flowVars.resource]"/>
我想检索在 mule 流之间的持久主题订阅者中排队的所有消息。我曾尝试使用 Mule 请求者,但对于 JMS inbount 持久主题订阅者,我们必须证明 "durableName" 属性。它在入站端点上工作正常,但无法弄清楚如何在流程执行之间调用它。 请在下面找到代码
<jms:activemq-connector name="Active_MQ" clientId="xyz-001" password="admin" brokerURL="tcp://localhost:61616" validateConnections="true" doc:name="Active MQ" persistentDelivery="true"/>
<mulerequester:config name="Mule_Requester" doc:name="Mule Requester"/>
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="activemqtestFlow1">
<http:listener config-ref="HTTP_Listener_Configuration" path="/getTopicMessages" doc:name="HTTP"/>
<mulerequester:request-collection config-ref="Mule_Requester" resource="jms://testTopic?connector=Active_MQ" doc:name="Mule Requester"/>
<foreach doc:name="For Each">
<logger message="subscriber two pay load" level="INFO" doc:name="Logger"/>
</foreach>
</flow>
以下流程工作正常,但我想在 JMS 主题的 mule 流程调用之间实现,
<flow name="activemqtestFlow1">
<jms:inbound-endpoint connector-ref="Active_MQ" doc:name="JMS" topic="testTopic" durableName="xyz-001">
<jms:transaction action="NONE"/>
</jms:inbound-endpoint>
<logger message="#[payload]" level="INFO" doc:name="Logger"/>
</flow>
请提出解决方法。
mule 请求者的持久主题订阅者可以通过创建通用端点并将主题、持久、持久名称属性传递给它来实现。
这种方法的唯一问题是,studio 在使用我们需要忽略和部署应用程序的属性元素时会显示验证错误。
端点会像
<endpoint name="durablesubscriberEndpoint" connector-ref="Active_MQ" address="jms://testTopic" doc:name="Generic">
<property value="true" key="durable"/>
<property value="subscriber-name" key="durableName"/>
<property value="true" key="topic"/>
</endpoint>
骡子请求者可以被称为
<mulerequester:request-collection config-ref="Mule_Requester" resource="durablesubscriberEndpoint" doc:name="Mule Requester"/>
它很有魅力...!!
另一种使它更通用和动态的方法可以使用以下
<set-variable variableName="resource" value="jms://#[message.inboundProperties.activeMQTopic]?connector=Active_MQ&durable=true&durableName=#[message.inboundProperties.'subscriber-name']&topic=true" doc:name="Variable"/>
<mulerequester:request-collection doc:name="Mule Requester" config-ref="Mule_Requester" resource="#[flowVars.resource]"/>