[Update] MQ install on Linux
Published on 27/10/2008
4 min read
In category
devenv
Aus gegebenem Anlass wird WebSphere MQ benötigt. Da IBM eine 90tägige Trail-Version anbietet und man lieber zuerst ausprobiert, bevor etwas produktiv genutzt werden soll, habe ich testweise WebSphere MQ 7 unter Ubuntu installiert. Es wird keine direkte Ubuntu-Version angeboten, aber die rpm-Pakete lassen sich auch unter Ubuntu installieren. Man muss nicht alle rpm-Pakete installieren, erst recht nicht die mitgelieferte Java-Umgebung (IBM Java SDK). Hier reicht die SUN Version völlig aus (Paket: sun-java6-jdk).
$> ls copyright
MQSeriesMsg_hu-7.0.0-0.i386.rpm gsk7bas-7.0-4.14.i386.rpm MQSeriesMsg_it-7.0.0-0.i386.rpm ibm-java2-i386-sdk-5.0-5.0.i386.rpm MQSeriesMsg_ja-7.0.0-0.i386.rpm lap MQSeriesMsg_ko-7.0.0-0.i386.rpm licenses MQSeriesMsg_pl-7.0.0-0.i386.rpm mqlicense.sh MQSeriesMsg_pt-7.0.0-0.i386.rpm MQSeriesClient-7.0.0-0.i386.rpm MQSeriesMsg_ru-7.0.0-0.i386.rpm MQSeriesConfig-7.0.0-0.i386.rpm MQSeriesMsg_Zh_CN-7.0.0-0.i386.rpm MQSeriesEclipseSDK33-7.0.0-0.i386.rpm MQSeriesMsg_Zh_TW-7.0.0-0.i386.rpm MQSeriesFTA-7.0.0-0.i386.rpm MQSeriesRuntime-7.0.0-0.i386.rpm MQSeriesJava-7.0.0-0.i386.rpm MQSeriesSamples-7.0.0-0.i386.rpm MQSeriesJRE-7.0.0-0.i386.rpm MQSeriesSDK-7.0.0-0.i386.rpm MQSeriesKeyMan-7.0.0-0.i386.rpm MQSeriesServer-7.0.0-0.i386.rpm MQSeriesMan-7.0.0-0.i386.rpm MQSeriesTXClient-7.0.0-0.i386.rpm MQSeriesMsg_cs-7.0.0-0.i386.rpm PreReqs MQSeriesMsg_de-7.0.0-0.i386.rpm readadd.txt MQSeriesMsg_es-7.0.0-0.i386.rpm READMEs MQSeriesMsg_fr-7.0.0-0.i386.rpm
Bevor die Installation begonnen werden kann, muss die Lizenz akzeptiert werden:
```bash
$> ./mqlicense.sh -accept
Zur Installation des MQ Servers reicht folgendes:
$>rpm -ivh --nodeps MQSeriesRuntime-7.0.0-0.i386.rpm MQSeriesServer-7.0.0-0.i386.rpm
Das Flag --nodeps ist notwendig, um nicht die Abhängigkeit zu /bin/sh aufzulösen.
Nach der Installation gibt es einen neuen User mqm. Dieser hat die Verwaltungs-Rechte für den MQServer.
Um einen Queue Manager (qm.world) zu erstellen, der eine Queue (q.one) beinhaltet sind folgende Befehle notwendig:
mqm:$> crtmqm -q qm.world mqm:$> strmqm mqm:$> runmqsc define qlocal (q.one) end
Mit -q wird eine Standard-Queue definiert, somit braucht man bei den restlichen Befehlen keine QueueManager-Angaben machen.
Zum Testen kann man die Beispiel-Programme verwenden:
mqm:/opt/mqm/samp/bin$> ./amqsput Q.ONE Sample AMQSPUT0 start target queue is Q.ONE Das ist ein Beispieltext mit wenig Inhalt etc.
Mit der Eingabe einer leeren Zeile kommt man aus dem Programm raus. In dem Beispiel wurde ein Satz in die Queue geschrieben. Zum Lesen aus der Queue:
mqm:/opt/mqm/samp/bin$> ./amqsget Q.ONE
Der Server ist jetzt installiert und funktionstüchtig. Nun wird der Client installiert. Zum Testen auch auf dem gleichen Rechner.
$>rpm -ivh --nodeps MQSeriesClient-7.0.0-0.i386.rpm
Um mit dem Server zu kommunizieren benötigt man noch einen Channel:
mqm:$> runmqsc define channel (ch.one) chltype (svrconn) trptype (tcp) mcauser ('mqm') define listener (l.one) trptype (tcp) control (qmgr) start listener (l.one) end
Beim dem Listener wird der Standardport genutzt (1414, ansonsten "port (...)" hinzufügen).
Dem Client muss der Host und der Channel mitgeteilt werden:
$>export MQSERVER='CH.ONE/TCP/localhost'
Um Daten in die Queue zu schreiben bzw. zu lesen existieren auch hierfür Beispielprogramme:
mqm:/opt/mqm/samp/bin$> ./amqsputc Q.ONE qm.world Ein Text vom Client. mqm:/opt/mqm/samp/bin$> ./amqsgetc Q.ONE qm.world
Man beachte jeweils das "c" an den Programmnamen.
Somit sind Server und Client installiert. Möchte man nun mit Java auf die Queues zugreifen, benötigt man die entsprechenden Bibliotheken:
rpm -ivh --nodeps MQSeriesJava-7.0.0-0.i386.rpm
Die libs sind unter
$>ls
/opt/mqm/java/lib CL3Export.jar com.ibm.mq.pcf.jar jta.jar CL3Nonexport.jar com.ibm.mq.postcard.jar ldap.jar com.ibm.mq.commonservices.jar com.ibm.mq.soap.jar libmqjbnd.so com.ibm.mq.defaultconfig.jar connector.jar libmqjexitstub02.so com.ibm.mq.headers.jar dhbcore.jar libPgmIpLayer.so com.ibm.mq.jar fscontext.jar OSGi com.ibm.mq.jmqi.jar jca providerutil.jar com.ibm.mqjms.jar jms.jar rmm.jar com.ibm.mq.jms.Nojndi.jar jndi.jar soap
zu finden.
Demnächst folgt ein Beitrag zur Java Entwicklung mit MQ.
[Update 23.06.2009] Ein Java Beispiel mit JMS gibt es nun auch.
Links:
[1] IBM WebSphere MQ
[2] IBM WebSphere MQ 7, Trail-Download. (Zugangsdaten sind notwendig, kostenlose Registrierung ist möglich)
[3] IBM Help: WebSphere MQ Linux install