Skip to content

[Update] MQ install on Linux

2008 Oktober 28
tags: , ,
by Haf

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

[lang=’bash‘]
$> 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
[/lang]

Bevor die Installation begonnen werden kann, muss die Lizenz akzeptiert werden:

[lang=’bash‘]$>./mqlicense.sh -accept[/lang]

Zur Installation des MQ Servers reicht folgendes:

[lang=’bash‘]$>rpm -ivh –nodeps MQSeriesRuntime-7.0.0-0.i386.rpm MQSeriesServer-7.0.0-0.i386.rpm
[/lang]

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:

[lang=’bash‘]mqm:$> crtmqm -q qm.world
mqm:$> strmqm
mqm:$> runmqsc
define qlocal (q.one)
end[/lang]

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:

[lang=’bash‘]mqm:/opt/mqm/samp/bin$> ./amqsput Q.ONE
Sample AMQSPUT0 start
target queue is Q.ONE
Das ist ein Beispieltext mit wenig Inhalt etc.
[/lang]

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:

[lang=’bash‘]mqm:/opt/mqm/samp/bin$> ./amqsget Q.ONE[/lang]

Der Server ist jetzt installiert und funktionstüchtig. Nun wird der Client installiert. Zum Testen auch auf dem gleichen Rechner.

[lang=’bash‘]$>rpm -ivh –nodeps MQSeriesClient-7.0.0-0.i386.rpm[/lang]

Um mit dem Server zu kommunizieren benötigt man noch einen Channel:

[lang=’bash‘]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[/lang]

Beim dem Listener wird der Standardport genutzt (1414, ansonsten „port (…)“ hinzufügen).

Dem Client muss der Host und der Channel mitgeteilt werden:

[lang=’bash‘]$>export MQSERVER=’CH.ONE/TCP/localhost'[/lang]

Um Daten in die Queue zu schreiben bzw. zu lesen existieren auch hierfür Beispielprogramme:

[lang=’bash‘]mqm:/opt/mqm/samp/bin$> ./amqsputc Q.ONE qm.world
Ein Text vom Client.
mqm:/opt/mqm/samp/bin$> ./amqsgetc Q.ONE qm.world
[/lang]

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:

[lang=’bash‘]rpm -ivh –nodeps MQSeriesJava-7.0.0-0.i386.rpm[/lang]

Die libs sind unter

[lang=’bash‘]$>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[/lang]

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

Share it!
  •  
  •  
  •  
  •  
  •  
  •  
3 Responses leave one →
  1. Alexander Marktl permalink
    Mai 25, 2009

    Hallo!

    Mit deinem Posting hast du mir schon sehr viel weitergeholfen.

    Hast du schon ein Beispiel wie ich die definierten Queues dann in einer Java (JMS) Applikation verwenden kann.

    Und 2tens wie kann ich die Queues monitoren…?

    Schon mal danke im vorraus.

    mfG
    Alex

  2. Juni 9, 2009

    Hi Alex,

    bzgl. Monitoring habe ich keine Erfahrung. Ich habe jedoch beim MQ Manager mal einen entsprechenden Dienst (Services) gesehen. Aber wie gesagt, leider keine Erfahrung dies bezüglich.

    Zum Beispiel:
    Ich kann diese Woche die Beispiele mal veröffentlichen (werde dann den Verweis hier auch aufführen)

    Gruß

    Haf

Trackbacks and Pingbacks

  1. Java JMS MQ Beispiel | Information Centre

Leave a Reply

Note: You can use basic XHTML in your comments. Your email address will never be published.

Subscribe to this comment feed via RSS