Как может очередь, присутствующая в контейнере amq, прочитать сообщение из темы, представленной в другом контейнере amq, с использованием Camel Blueprint DSL? - PullRequest
0 голосов
/ 26 октября 2018

Я новичок в верблюжьих проектах DSL. Я хочу прочитать сообщение, опубликованное в теме, присутствующей в контейнере AMQ, из очереди, которая присутствует в отдельном контейнере amq на том же сервере.

Я запутался, как подключиться из одной темы контейнера amq к другой очереди контейнера amq. Мне нужно создать две JmsXAConnectionFactories для двух отдельных контейнеров AMQ?

Мой план выглядит так -

http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">

<camelContext xmlns="http://camel.apache.org/schema/blueprint"
    xmlns:order="http://fusesource.com/examples/order/v7" id="cluster_blueprint">

        <!-- JMS connection for the external AMQ -->
    <bean id="jmsXAConnectionFactoryExternal" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="discovery:(fabric:masterslave)" />
        <property name="userName" value="admin" />
        <property name="password" value="admin" />
    </bean>
    <!-- JMS connection details for the internal AMQ -->
    <bean id="jmsXAConnectionFactoryInternal" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="discovery:(fabric:cluster)" /> <!-- Here, cluster is the group name where the internal amq is present -->
        <property name="userName" value="admin" />
        <property name="password" value="admin" />
    </bean>

    <bean id="activemqExternal" class="org.apache.camel.component.jms.JmsComponent">
        <property name="connectionFactory" ref="jmsXAConnectionFactoryExternal" />
    </bean>

    <bean id="activemqInternal" class="org.apache.camel.component.jms.JmsComponent">
        <property name="connectionFactory" ref="jmsXAConnectionFactoryInternal" />
    </bean>
    <route id="topic-to-queue-route">
        <from uri="activemqExternal:topic:bmg.cluster?clientId=clientrm&amp;durableSubscriptionName=subrm" />
        <log message="Received message from topic - bmg.cluster" loggingLevel="INFO" />
        <to uri="activemqInternal:queue:bmg.publish.capture" />
    </route>

</camelContext>

...