如何在 Mulesoft 中共享持久队列 "Inter-app"?
How to share persistent queue "Inter-app" in Mulesoft?
我们正在尝试在 public VPC 中的两个不同应用程序之间执行最简单的发布/消费操作。
发布者APP运行正常。它生成队列并正确发布所有消息。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
<vm:config name="VM_Config" doc:name="VM Config" doc:id="1c2283b1-26a8-4fc9-b048-b50bbee08e62" >
<vm:queues >
<vm:queue queueName="order" queueType="PERSISTENT" />
</vm:queues>
</vm:config>
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="6f88c504-19e6-4cca-8b50-efb95b2dcbc8" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="sltestpqpubFlow" doc:id="23315e3e-49b0-4f61-a86c-321a2cb9c4ad" >
<http:listener doc:name="Listener" doc:id="2268dae5-2e89-45f4-a685-50602bea4205" config-ref="HTTP_Listener_config" path="/fire"/>
<vm:publish queueName="order" doc:name="Publish" doc:id="e928d591-4f4a-4d54-9390-3e69dd2520b8" config-ref="VM_Config">
<vm:content ><![CDATA[#["Message sent"]]]></vm:content>
</vm:publish>
<logger level="INFO" doc:name="Logger" doc:id="2eba63dd-15d0-4961-9c75-de8fee366caa" />
</flow>
</mule>
另一方面,侦听器 APP 正在创建自己的同名持久队列。因此,不使用上述应用程序发布的消息。
<mule xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd">
<vm:config name="VM_Config" doc:name="VM Config" doc:id="c9d8390d-cc35-4188-b034-70cb144f2da7">
<vm:connection >
<reconnection failsDeployment="true" >
<reconnect />
</reconnection>
</vm:connection>
<vm:queues >
<vm:queue queueName="order" queueType="PERSISTENT" />
</vm:queues>
</vm:config>
<flow name="sltestpqFlow" doc:id="1681828e-0889-4c2f-8f03-cebe7cf852cd" >
<vm:listener doc:name="Listener" doc:id="4b1a3db0-946d-4428-a7b8-b2e3aebd88fa" config-ref="VM_Config" queueName="order" transactionalAction="ALWAYS_BEGIN" transactionType="XA">
<reconnect />
</vm:listener>
<logger level="INFO" doc:name="Logger" doc:id="8efdd42a-9f73-4e07-80bd-b42cafed297f" message="Got event"/>
</flow>
</mule>
不确定我们缺少单个队列共享(而不是每个应用程序都有自己的队列)
更新 02/20/2020 11:10 太平洋标准时间上午
我们在 Mule 4 中使用 VM Connector v2.0
https://docs.mulesoft.com/connectors/vm/vm-reference
VM 连接器只能在同一个 JVM 中工作。对于部署在 CloudHub 中的应用程序,这意味着仅在同一应用程序中。您不能与任何其他应用程序共享消息。你需要带上自己的 JMS 代理,安装在应用程序可以访问它的地方,一些其他带有 Mule 4 连接器的消息服务,或者使用 Anypoint MQ。
我们正在尝试在 public VPC 中的两个不同应用程序之间执行最简单的发布/消费操作。
发布者APP运行正常。它生成队列并正确发布所有消息。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
<vm:config name="VM_Config" doc:name="VM Config" doc:id="1c2283b1-26a8-4fc9-b048-b50bbee08e62" >
<vm:queues >
<vm:queue queueName="order" queueType="PERSISTENT" />
</vm:queues>
</vm:config>
<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="6f88c504-19e6-4cca-8b50-efb95b2dcbc8" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="sltestpqpubFlow" doc:id="23315e3e-49b0-4f61-a86c-321a2cb9c4ad" >
<http:listener doc:name="Listener" doc:id="2268dae5-2e89-45f4-a685-50602bea4205" config-ref="HTTP_Listener_config" path="/fire"/>
<vm:publish queueName="order" doc:name="Publish" doc:id="e928d591-4f4a-4d54-9390-3e69dd2520b8" config-ref="VM_Config">
<vm:content ><![CDATA[#["Message sent"]]]></vm:content>
</vm:publish>
<logger level="INFO" doc:name="Logger" doc:id="2eba63dd-15d0-4961-9c75-de8fee366caa" />
</flow>
</mule>
另一方面,侦听器 APP 正在创建自己的同名持久队列。因此,不使用上述应用程序发布的消息。
<mule xmlns:vm="http://www.mulesoft.org/schema/mule/vm" xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd">
<vm:config name="VM_Config" doc:name="VM Config" doc:id="c9d8390d-cc35-4188-b034-70cb144f2da7">
<vm:connection >
<reconnection failsDeployment="true" >
<reconnect />
</reconnection>
</vm:connection>
<vm:queues >
<vm:queue queueName="order" queueType="PERSISTENT" />
</vm:queues>
</vm:config>
<flow name="sltestpqFlow" doc:id="1681828e-0889-4c2f-8f03-cebe7cf852cd" >
<vm:listener doc:name="Listener" doc:id="4b1a3db0-946d-4428-a7b8-b2e3aebd88fa" config-ref="VM_Config" queueName="order" transactionalAction="ALWAYS_BEGIN" transactionType="XA">
<reconnect />
</vm:listener>
<logger level="INFO" doc:name="Logger" doc:id="8efdd42a-9f73-4e07-80bd-b42cafed297f" message="Got event"/>
</flow>
</mule>
不确定我们缺少单个队列共享(而不是每个应用程序都有自己的队列)
更新 02/20/2020 11:10 太平洋标准时间上午
我们在 Mule 4 中使用 VM Connector v2.0 https://docs.mulesoft.com/connectors/vm/vm-reference
VM 连接器只能在同一个 JVM 中工作。对于部署在 CloudHub 中的应用程序,这意味着仅在同一应用程序中。您不能与任何其他应用程序共享消息。你需要带上自己的 JMS 代理,安装在应用程序可以访问它的地方,一些其他带有 Mule 4 连接器的消息服务,或者使用 Anypoint MQ。