IBM MQ – Ein Überblick bzw. Einführung

Was ist IBM MQ?

 

Wenn man IBM MQ kennen lernen bzw. verstehen will, muss man sich erst mit den Kommunikationsmechanismen in der IT auseinandersetzen. Während im B2C Bereich die Kommunikation in der Regel synchron erfolgt, verwendet man im B2B Bereich lieber eine asynchrone Kommunikation.

Die asynchrone Kommunikation hat den Vorteil, dass der Absender nicht auf eine Antwort des Empfängers einer, so genannten, Nachricht warten muss. Man entkoppelt somit die beiden Systeme, die deswegen unabhängig voneinander weiter arbeiten können. Dies setzt allerdings voraus, dass die verwendeten Programme dies unterstützen. Im B2B ist dies möglich, während im B2C, dort sitzt ja immer ein Benutzer vor einen Browser oder System, auf ein Ergebnis wartet und damit die Kommunikation meist synchron sein muss. Bei der asynchronen Kommunikation, die in der Regel die Kommunikation zwischen zwei Computerprogrammen unterstützen, ist eine synchrone Kommunikation nicht unbedingt erforderlich. Das Ganze ist eigentlich wie ein Postablagekörbchen nur besser und elektronisch.

Beispiel: Eine Anwendung im Check in Bereich des Flughafens sammelt die Passagierdaten für den jeweiligen Flug. Nach Schließen des Fluges müssen die Daten an den Zielflughafen, beispielsweise in New York, geschickt werden. Ob diese Daten in der gleichen Sekunde, in der sie aufgenommen worden sind, oder 2 Stunden später, in New York ankommen, beziehungsweise entgegengenommen werden, ist für die Anwendung unerheblich, da der Flug ja mindestens 6 Stunden dauert und erst dann die Daten am Zielort vorliegen müssen.

IBM MQ ist ein so genanntes Message oriented middleware (MOM) System, welchen genau diese asynchrone Kommunikation unterstützt.

Deswegen gilt: Every DAD needs a MOM. Every Distributed Appliction Development needs a Message Oriented Middleware (alter IBM Merksatz – nicht ganz ernst)

Wie ist IBM MQ aufgebaut?

Die Initiale Idee von IBM MQ ist eigentlich aus der Realität abgeschaut. Man verwendet bei IBM MQ so genannte Messages oder deutsch Nachrichten, um die Daten zu übermitteln. Diese Nachrichten haben einen Header in dem u.a. die Empfängerinformationen stehen und einen Message Body oder auch Payload genannt, in dem die zu übermittelnden Daten stehen. Diese Messages werden in Message Queues abgelegt. Der Sinn dahinter ist, dass der Sender die Message in einer Queue ablegt. Damit ist sein Teil erledigt. Der Empfänger holt bei Bedarf oder zu gegebener Zeit die Message aus der Queue und verarbeitet sie weiter. Der Vorteil ist, wie weiter oben schon beschrieben, die asynchrone Nutzung. Der Sender steckt die Message in die Queue und damit ist die Arbeit für ihn erledigt. Der Empfänger kannst zu gegebener Zeit oder wenn es ihm passt die Message aus der Queue holen und verarbeiten.

Welche Konfigurationen gibt es?

IBM MQ kann auf verschiedene Art und Weisen konfiguriert werden. Zuerst einmal gibt es einen Queue Manager, auf dem die Queues eingerichtet werden. Die einfachste Konfiguration ist dann, dass der Absender in eine Queue, die auf dem IBM Queue Manager angelegt worden ist, die Message ablegt und der Empfänger die Message aus der gleichen Queue ausliest.

Auch kann man ein, so genanntes Remote oder Distributed Queuing konfigurieren. Hierbei werden zwei Queue Manager miteinander über einen Channel verbunden. Wenn die Verbindung einmal steht, kann der Absender auf seiner Seite in eine sogenannte Remote Queue auf seinem lokalen Queue Manager die Message ablegen. Diese wird dann über das Netzwerk zu dem Remote Queue Manager und der jeweiligen Queue übertragen. Dieses Remote Queuing bietet den Vorteil, dass Sender und Empfänger an ganz unterschiedlichen Stellen sitzen können und jeweils ihre eigene Queue Manager betreiben. Das Ganze unterstützt dann das sogenannte „exactly and asured once delivery“. Weiterhin kann man hier diverse Sicherheitskonzepte, wie eine gesicherte TLS Verbindung realisieren.

Eine weitere Konfiguration ist das so genannte Publish and sucribe. Diese Konfiguration unterstützt den so Absender, der eine Message zu einem bestimmten Topic (Thema) bereitstellt und diese automatisch vom MQ System zu den jeweiligen Queues für die jeweiligen Subscriber (wollen zu dem Topic die Infos haben) verteilt wird. Diese Art von Konfirmation ist ein so genanntes Point to Point bzw. 1-1 Messaging mehr, sondern mehr eine 1-m (many) Konfiguration.

Ferner besteht eine weitere Möglichkeit der Konfiguration: Das Erstellen von so genannten Clustern. Ein Cluster besteht aus verschiedenen Queue Managern, auf denen die Queues so konfiguriert werden, dass ein Load balancing stattfinden kann.

Welche Plattformen werden unterstützt?

IBM MQ „links nearly everything to everything”. D.h. IBM unterstützt mit ihrem System fast alle gängigen Plattformen. Zu unterscheiden sind allerdings Client und Server Konfigurationen. Die Client Konfiguration können normalerweise auf beliebigen Maschinen aufgebaut werden und werden dann mit dem Server verbunden. Auf den Clients lassen sich keine Queues anlegen. Sie dienen lediglich dazu, um über das MQI (MQ Application Programming Interface),  welches das Programmierinterface für die Client Anwendung ist, Programme aufrufen zu können, sprich Queues ansprechen zu können (MQPUT, MQGET etc.). Die Server Konfiguration steht auf allen gängigen Betriebssystemen zur Verfügung und überall gleich konfiguriert. Einzige Ausnahme hierbei ist das Z/OS. Beim Z/OS ist die Installation unterschiedlich. Bei Allen anderen Plattform ist die Konfiguration gleich. Es spielt also keine Rolle, ob sie einen Queue Manager auf einem Windows System oder einem AIX System installieren. Nur auf den MQ Servern lassen sich Queue Manager installieren. Sie dienen dann als Basis, um die jeweiligen Queues anlegen zu können, wobei hier unterschiedliche Konfigurationen -siehe oben- aufgebaut werden können.

Was sind die Vorteile von IBM MQ?

Wenn man sehr ins Detail geht, kommt man auf sehr viele Vorteile. Ohne zu sehr in Details zu gehen, kann man ein paar Vorteile nennen:

  1. Konnektivität. Wie bereits angesprochen kann mit IBM MQ mehr oder minder alles mit allen miteinander verbunden werden. Die Client Plattform, als auch die Server Plattform, bietet da sehr unterschiedliche Konfigurationsmöglichkeiten. Hierzu zählt auch das über die Message Queues beliebige Daten übertragen werden können. D.h. das System selbst ist, was die Daten anbelangt, neutral. Ob ich Datenbank Information oder Binärdaten übertrage, ist dem IBM MQ egal.
  2. Zuverlässigkeit. Das System ist so ausgelegt, dass es jede Art von Server Crash oder ähnlichem wie Verbindungsverlust kompensiert, beziehungsweise das System so wieder aufsetzt wird, als wäre nichts passiert. Es gehen keine Messages (wenn sie persistent sind) verloren und sie werden auch nur exakt einmal ausgeliefert. Zum Thema Zuverlässigkeit zählt auch, dass das  IBM MQ ein transaktionelles System ist. Dies bildet die Basis für die Zuverlässigkeit und sorgt so dafür, dass keine Messages verloren gehen. Es kann im Rahmen eines Two Phase Commit als Transaktionsmanager oder als Resourcen Manager konfiguriert werden.
  3. Sicherheit. Seit Version 6 sind die Security Konzepte nach und nach immer weiter überarbeitet worden, so dass heute jede Art der Security Konfiguration möglich ist. Das beginnt mit dem Object Authority Manager, der dafür sorgt, dass nur die jeweiligen Gruppen und Benutzer auf den Queues berechtigt sind, und geht bis hin zur Unterstützung von TLS auf der Transportebene. Es gibt heute keine Lücken mehr. Damit kann man eine sichere MQ Umgebung mit Bordmitteln realisieren. Security Exits sind kaum noch nötig.
  4. Skalierbarkeit. Es besteht die Möglichkeit von einfachen Konfigurationen schrittweise zu hoch komplexen das System zu erweitern. Hierfür können verschiedene Konfigurationen je nach Bedarf ergänzt beziehungsweise umgebaut werden. So kann von einem einfachen Queuing zu einem Remote Queuing oder auch Distribution Queuing umgebaut werden,  oder durch Publish and Subscribe ergänzt werden. Eine weitere Möglichkeit bietet der Aufbau eines Clusters, das die Skalierbarkeit weiter fördert.

Abgrenzung zu IBM Integration Bus (IIB), jetzt IBM ACE (App Connect Enterprise)

Während das IBM MQ rein zum Transport von beliebigen Daten dient, ist der IIB dazu da, um Nachrichten zu formatieren, sprich von einem Format in ein anderes zu überführen oder intelligent weiterzuleiten (Routing). Hier ist es wichtig diese beiden unterschiedlichen Systeme zu verstehen beziehungsweise voneinander zu trennen. IBM MQ  für den Transport. Der IIB ist für die Konfiguration bzw. zum Formatieren und für ein intelligentes (content based routing) Weiterleiten verantwortlich. Darüber würde in einer vollständigen Konfiguration noch ein Prozess Manager sitzen. (Siehe auch IBM Integration Bus (IBM ACE) und IBM Business Process Manager)

Schulungen zum Thema MQ

Das IBM Schulungsportfolio bietet unterschiedliche Kurse zu den jeweiligen Themen an. Wenn man sich erst einen Überblick verschaffen möchte, so kann man sich in einem 1-Tagesseminar genau diesen Überblick über Konzepte und Möglichkeiten des Systems holen.

Der IBM Kurscode ist WM103 – Technical Introduction to IBM MQ. Die Firma Obtec bietet diesen Kurs unter der Kursnummer OB2227 an.

Für die Konfiguration des Systems bietet die IBM generell zwei Kurse an. Der eine ist für die Konfiguration auf Z/OS Ebene.

Der andere ist für die Konfiguration auf den anderen Systemen. Der Kunde kann bei den Übungen zwischen Windows und Linux Plattform wählen. Nächster Termin:

IBM WM153 – IBM MQ V9 System Administration (using Windows for labs) Obtec OB2225:

15.02.-18.02.2021 | WM153G – IBM MQ V9 System Administration (using Windows for labs)

IBM WM154 – IBM MQ V9 System Administration (using Linux for labs) Obtec OB2226:

15.02.-18.02.2021 | WM154G – IBM MQ V9 System Administration (using Linux for labs)

Wobei man sagen muss, dass sich diese Kurse inhaltlich nicht unterscheiden, da auch das IBM MQ auf beiden bzw. auf allen Plattformen das gleiche ist. Selbst wenn man im Kurs auf Windows die Übung durchführen würde, könnte man das gelernte Wissen bis hoch zur AIX Plattform anwenden.

In dem ersten grundlegenden Administrationskursen werden Konzepte wie Point to Point Messaging und Remote Messaging, sowie die Grundlagen eines Clusteraufbaus erklärt. Neben dem Einstieg in Security runden Konzepte und Übungen zur Sicherung des Systems, sowie die Nutzung und Konfiguration von Clients den ersten Kurs ab.

Wer das Thema Clustering vertiefen und das Thema Publish and Subscribe kennen lernen möchten, sowie vertiefte Kenntnisse zum Thema Security haben möchte, der kann den zweiten Teil des Kurses besuchen.

IBM WM213 – IBM MQ V9 Advanced System Administration (Distributed) OB2231. Der nächste Termin ist:

01.03.-04.03.2021 | WM213G – IBM MQ V9 Advanced System Administration (Distributed)

Bei weiteren Fragen können Sie sich gerne über die Kontaktseite melden.