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 Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Blog-Autor*in
Tobias Trelle
Software-Architekt
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.