如何在 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。