Как поделиться постоянной очередью «Интер-приложение» в Mulesoft? - PullRequest
0 голосов
/ 20 февраля 2020

Мы пытаемся выполнить простейшее действие publi sh / потребление среди двух различных приложений в publi c VP C.

Приложение издателя работает, как и ожидалось. Он генерирует очередь и публикует все сообщения правильно.

enter image description here enter image description here

<?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 слушателя на другом Рука создает свою постоянную очередь с тем же именем. Поэтому не использовать сообщения, опубликованные приложением, упомянутым выше.

enter image description here

<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>

Не уверен, что нам не хватает для совместного использования одной очереди (вместо каждого приложения, имеющего свое собственное)

ОБНОВЛЕНИЕ 20.02.2020 11:10 PST

Мы используем VM Connector v2.0 в Mule 4 https://docs.mulesoft.com/connectors/vm/vm-reference

1 Ответ

0 голосов
/ 21 февраля 2020

Разъем VM работает только внутри той же JVM. В случае приложений, развернутых в CloudHub, это означает только внутри одного приложения. Вы не можете делиться сообщениями с любыми другими приложениями. Вам нужно принести своего собственного JMS-брокера, установленного где-нибудь, где приложения могут получить к нему доступ, какой-то другой сервис сообщений с соединителем для Mule 4 или использовать Anypoint MQ.

...