在 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&amp;durable=true&amp;durableName=#[message.inboundProperties.'subscriber-name']&amp;topic=true" doc:name="Variable"/>
<mulerequester:request-collection doc:name="Mule Requester" config-ref="Mule_Requester" resource="#[flowVars.resource]"/>