Mule ESB ist eine Opensource-Implementierung eines Enterprise Service Bus. Die kostenpflichtige Enterprise Edition von Mule ESB setzt sich von der freien Community Edition unter anderem durch die out-of-the-box Integration des IBM WebSphereMQ Messaging-Produkts ab. Der folgende Beitrag erläutert, wie man auch in der Community Edition schnell und einfach ein WebSphereMQ-System als JMS-Provider anbindet.
Zunächst sind einige Bibilotheken mit der WebSphereMQ Client-API dem Klassenpfad hinzuzufügen. Im Einzelnen sind dies
- com.ibm.mq.jar
- com.ibm.mqjms.jar
- dbhcore.jar
Diese JARs sind Teil der Installation eines WebSphereMQ-Servers. Alternativ können diese aus dem kostenfreien WebSphereMQ Client verwendet werden. Die kostenfreie Client-Variante ist allerdings nicht XA-fähig. Die JARs sind nach
1$MULE_HOME/lib/opt
zu kopieren.
Zur Konfiguration des WebSphereMQ-System müssen nun folgende Parameter bekannt sein:
- IP/Hostname
- Portnummer
- Name der QueueManagers
- Name des Kanals
- User / Password
Der entsprechende Mule-Konnektor kann dann wie folgt konfiguriert werden:
1<jms:connector 2 name="WebsphereMQConnector" 3 connectionFactory-ref="MQConnectionFactory" 4 specification="1.0.2b" 5 username="mquser" 6 password="password" 7 numberOfConsumers="1"/> 8<spring:bean 9 id="MQConnectionFactory" 10 class="com.ibm.mq.jms.MQQueueConnectionFactory"> 11 <spring:property name="transportType" value="1"/> 12 <spring:property name="hostName" value="localhost"/> 13 <spring:property name="port" value="1414"/> 14 <spring:property name="channel" value="MY.CHANNEL"/> 15 <spring:property name="queueManager" value="MY.QM"/> 16</spring:bean>
Um die Namespaces „jms“ and „spring“ benutzen zu können, müssen diese im Root-Element der mule-config.xml
deklariert werden. Vorausgesetzt, Sie nutzen Mule in Version 3.0, kann die wie folgt aussehen:
1<mule xmlns="http://www.mulesoft.org/schema/mule/core" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:spring="http://www.springframework.org/schema/beans" 4 xmlns:jms="http://www.mulesoft.org/schema/mule/jms" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 7 http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.0/mule.xsd 8 http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/3.0/mule-jms.xsd">
Danach kann der WebSphereMQConnector z.B. zur Definition von Inbound JMS-Endpoints verwendet werden:
1<endpoint 2 name="MyInQueue" 3 address="jms://queue:MY.QUEUE.IN" 4 connector-ref="WebsphereMQConnector"/> 5... 6<flow id="MyFlow"> 7 <inbound-endpoint ref="MyInQueue" /> 8 ... 9</flow>
Für JMS Consumer ist zu beachten, dass für zu lesende Warteschlangen mindestens die Privilegien GET, INQ und BROWSE vergeben worden sind. Dies ist hier detailiert beschrieben. JMS Producer benötigen PUT-Privilegien.
Fazit: wenn Ihre Queues nicht an verteilten Transaktionen teilnehmen müssen, kommen Sie auch mit der kostenfreien Community Edtion des Mule ESB aus, wenn Sie ein WebSphereMQ-System als JMS-Provider integrieren möchten.
Weitere Beiträge
von Tobias Trelle
Dein Job bei codecentric?
Jobs
Agile Developer und Consultant (w/d/m)
Alle Standorte
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Blog-Autor*in
Tobias Trelle
Software Architect
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.