2016-05-27 6 views
0

Ich habe diese seit Tagen betrachtet und habe immer noch keinen Erfolg gehabt.Wie Camel zu verwenden, um Nachricht von remote WMQ zu erhalten, und Nachricht in ActiveMQ zu platzieren?

Ich habe ActiveMQ auf einem Server installieren und ausführen. Erstellt eine Warteschlange namens "testUpdate". Ich habe auch eine andere Warteschlange auf einem anderen Server, nennen Sie dies "weiterleiten" und dies ist auf dem IBM MQ (WMQ). So

wir haben testUpdate auf ActiveMQ und vorwärts auf WMQ. Ich möchte die Nachricht auf weiterleiten Warteschlange in testUpdate Warteschlange platziert werden. Versuchen, Camel für diesen Prozess zu verwenden.

Also das Setup in ActiveMQ hat eine XML (activemq.xml), die ich Spring Bohnen platzieren und konfigurieren kann, um das Routing zu tun. In diesem xml, ich http://camel.apache.org/schema/springhttp://camel.apache.org/schema/spring/camel-spring.xsd den xmlns hinzugefügt und dann hinzugefügt

import resource = "camel.xml"

In diesem neuen xml, habe ich folgendes:

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

I Die JAR-Datei com.ibm.mq.allclient.jar wurde in den lib-Ordner von ActiveMQ hinzugefügt. Wenn ich das Programm ausführe, erhalte ich folgende Ausnahme: java.lang.ClassNotFoundException: javax.jms.JMSRuntimeException

Es hört sich an, als würde ich die websphere jar Datei vermissen? Ist das richtig?

Antwort

1

Ich verwende regelmäßig IBM MQ und ActiveMQ. Dieses Beispiel zeigt einige Beispielkonfigurationsoptionen. Bitte stellen Sie sicher, dass Sie diese für Ihre eigenen Anwendungsfälle konfigurieren.

//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> 
+1

Danke Matthew. Der zweite Teil der IBM XML-Einstellung ist das, was ich verpasst habe ... Heute Morgen herausgefunden. Erstellen eines org.apache.camel.component .... Stücks. Ich habe auch eine IBM JAR-Datei vermisst. – pompanoSlayer

1

Sie jms Komponente verwenden können, um die Nachricht von IBM MQ zu konsumieren und activemq Komponente per Post an ActiveMQ

haben einen Blick auf die folgenden Links

http://camel.apache.org/jms.html http://camel.apache.org/activemq.html

Dank verwenden, Gibu

+0

Danke George! Ich habe deine Antwort erst gestern verstanden, als ich die Arbeit bekommen habe. Ist Ihnen nicht aufgefallen, dass Sie IBM MQ mit der JMS-Komponente verbinden müssen, damit camel sie verwenden kann. – pompanoSlayer

Verwandte Themen