Apache camel 如何使用Camel从远程WMQ获取消息并将消息放置在ActiveMQ中?

Apache camel 如何使用Camel从远程WMQ获取消息并将消息放置在ActiveMQ中?,apache-camel,activemq,ibm-mq,Apache Camel,Activemq,Ibm Mq,我已经看了好几天了,但还没有成功 我已在服务器上安装并运行activeMQ。创建了一个名为“testUpdate”的队列。我在另一台服务器上还有另一个队列,我们称之为“转发”,这是在IBMMQ(WMQ)上 所以我们在ActiveMQ上有testUpdate,在WMQ上有forward。我希望转发队列上的消息被放入testUpdate队列。正在尝试将Camel用于此过程 所以ActiveMQ中的设置有一个XML(ActiveMQ.XML),我可以放置Springbeans并配置它来执行路由。在这个

我已经看了好几天了,但还没有成功

我已在服务器上安装并运行activeMQ。创建了一个名为“testUpdate”的队列。我在另一台服务器上还有另一个队列,我们称之为“转发”,这是在IBMMQ(WMQ)上

所以我们在ActiveMQ上有testUpdate,在WMQ上有forward。我希望转发队列上的消息被放入testUpdate队列。正在尝试将Camel用于此过程

所以ActiveMQ中的设置有一个XML(ActiveMQ.XML),我可以放置Springbeans并配置它来执行路由。在这个xml中,我向xmlns中添加了

import resource=“camel.xml”

在这个新的xml中,我有以下内容:

    <beans
   xmlns="http://www.springframework.org/schema/beans"  
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


        <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
            <route>
                <description>Example Camel Route</description>
                <from uri="mqseries:forward"/>
                <to uri="activemq:testUpdate"/>
            </route>
        </camelContext>

        <bean id="mqseries" class="com.ibm.mq.jms.MQQueueConnectionFactory"> 
                <property name="transportType" value="1"/> 
                <property name="hostName" value="172.00.12.21/> 
                <property name="port" value="xyza"/> 
                <property name="queueManager" value="manager"/> 
                <property name="channel" value="srvcChannel"/> 
        </bean> 

        <!--
           Lets configure some Camel endpoints

           http://camel.apache.org/components.html
        -->

        <!-- configure the camel activemq component to use the current broker -->
        <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" >
            <property name="connectionFactory">
              <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                <property name="brokerURL" value="vm://amq-broker?create=false"/>
                <property name="userName" value="${activemq.username}"/>
                <property name="password" value="${activemq.password}"/>
              </bean>
            </property>
        </bean>

    </beans>

骆驼路线示例

您可以使用jms组件使用来自IBM MQ的消息,并使用activemq组件将其发布到activemq

看看下面的链接

谢谢,
Gibu

您可以使用jms组件来使用来自IBM MQ的消息,并使用activemq组件将其发布到activemq

看看下面的链接

谢谢,
Gibu

我定期使用IBM MQ和ActiveMQ。下面的示例将向您展示一些示例配置选项。请确保您将这些配置为您自己的用例

//ActiveMQ connection factory
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" destroy-method="doStop">
    <property name="configuration">
        <bean class="org.apache.camel.component.jms.JmsConfiguration">
            <property name="concurrentConsumers" value="1" />
            <property name="maxConcurrentConsumers" value="1" />
            <property name="acceptMessagesWhileStopping" value="true" />
            <property name="acknowledgementModeName" value="CLIENT_ACKNOWLEDGE" />
            <property name="cacheLevelName" value="CACHE_CONSUMER" />
            <property name="connectionFactory">
                <bean class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
                    <property name="maxConnections" value="1" />
                    <property name="MaximumActiveSessionPerConnection" value="500" />
                    <property name="connectionFactory">
                        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                            <property name="brokerURL" value="${activemq1.brokerUrl}" />
                            <property name="userName" value="${activemq1.username}" />
                            <property name="password" value="${activemq1.password}" />
                            <property name="redeliveryPolicy">
                                <bean class="org.apache.activemq.RedeliveryPolicy">
                                    <property name="maximumRedeliveries" value="-1" />
                                </bean>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
        </bean>
    </property>
</bean>

//IBM MQ connection factory
<bean id="ibmmq" class="org.apache.camel.component.jms.JmsComponent" destroy-method="doStop">
    <property name="concurrentConsumers" value="1" />
    <property name="maxConcurrentConsumers" value="1" />
    <property name="connectionFactory">
        <bean class="org.springframework.jms.connection.SingleConnectionFactory" destroy-method="destroy">
            <constructor-arg>
                <bean class="com.ibm.mq.jms.MQQueueConnectionFactory">
                    <property name="transportType" value="1" />
                    <property name="channel" value="${channel}" />
                    <property name="hostName" value="${hostname}" />
                    <property name="port" value="${port}" />
                    <property name="queueManager" value="${queueManager}" />
                </bean>
            </constructor-arg>
        </bean>
    </property>
</bean>
//ActiveMQ连接工厂
//IBM MQ连接工厂

我定期使用IBM MQ和ActiveMQ。下面的示例将向您展示一些示例配置选项。请确保您将这些配置为您自己的用例

//ActiveMQ connection factory
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent" destroy-method="doStop">
    <property name="configuration">
        <bean class="org.apache.camel.component.jms.JmsConfiguration">
            <property name="concurrentConsumers" value="1" />
            <property name="maxConcurrentConsumers" value="1" />
            <property name="acceptMessagesWhileStopping" value="true" />
            <property name="acknowledgementModeName" value="CLIENT_ACKNOWLEDGE" />
            <property name="cacheLevelName" value="CACHE_CONSUMER" />
            <property name="connectionFactory">
                <bean class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
                    <property name="maxConnections" value="1" />
                    <property name="MaximumActiveSessionPerConnection" value="500" />
                    <property name="connectionFactory">
                        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                            <property name="brokerURL" value="${activemq1.brokerUrl}" />
                            <property name="userName" value="${activemq1.username}" />
                            <property name="password" value="${activemq1.password}" />
                            <property name="redeliveryPolicy">
                                <bean class="org.apache.activemq.RedeliveryPolicy">
                                    <property name="maximumRedeliveries" value="-1" />
                                </bean>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
        </bean>
    </property>
</bean>

//IBM MQ connection factory
<bean id="ibmmq" class="org.apache.camel.component.jms.JmsComponent" destroy-method="doStop">
    <property name="concurrentConsumers" value="1" />
    <property name="maxConcurrentConsumers" value="1" />
    <property name="connectionFactory">
        <bean class="org.springframework.jms.connection.SingleConnectionFactory" destroy-method="destroy">
            <constructor-arg>
                <bean class="com.ibm.mq.jms.MQQueueConnectionFactory">
                    <property name="transportType" value="1" />
                    <property name="channel" value="${channel}" />
                    <property name="hostName" value="${hostname}" />
                    <property name="port" value="${port}" />
                    <property name="queueManager" value="${queueManager}" />
                </bean>
            </constructor-arg>
        </bean>
    </property>
</bean>
//ActiveMQ连接工厂
//IBM MQ连接工厂

您可以使用用户camel额外组件从wmq获取消息,而无需使用JMS包装,然后使用自定义camel组件将消息发送到ActiveMQ。另请参见类似主题

您可以使用users camel extra组件从wmq获取消息,而无需使用JMS包装,然后使用自定义camel组件将消息发送到ActiveMQ。另请参见类似主题

谢谢你,马修。IBM XML设置的第二部分是我错过的。。。今天早上发现的。正在创建org.apache.camel.component。。。。块我还错过了一个IBMJAR文件。谢谢Matthew。IBM XML设置的第二部分是我错过的。。。今天早上发现的。正在创建org.apache.camel.component。。。。块我还错过了一个IBMJAR文件。谢谢乔治!直到昨天我才明白你的答案。我没有意识到必须用JMS组件包装IBMMQ,这样camel才能使用它。谢谢George!直到昨天我才明白你的答案。我没有意识到必须用JMS组件包装IBMMQ,以便camel可以使用它。