はじめに
IBM MQは今年30周年を迎える歴史のある製品です。現在も多くの企業の基幹システム間の連携で活躍しています。近年は、クラウドでの活用例も増えてきており、MQ Client/Serverの連携だけでなく、ほかのサービスと効率的に接続する要望も増えてきています。この記事では、App Connect(iPaaS)機能を活用して、MQとの連携を効率的に実現するための方法をご紹介します。今回は以下のようなイメージ図の開発をご紹介します。
1. MQインターフェースのAPI化開発
1.0 事前準備 - MQ on IBM Cloud環境
今回は、IBM Cloudで提供されているMQフリープランのインスタンスを登録します。
インスタンス画面からキュー・マネージャーを登録します。
アプリケーション資格情報を登録します。
この情報は後ほどApp Connectから接続する際に使用します。
キューマネージャーを選択して、エンドポイント情報を確認します。
1.1 App Connectコンソール接続
以下がApp Connect Designaer(iPaaS)のコンソール画面です。今回は、Cloud Pak for Integration環境(v12.0.7)を使用しています。IBM CloudでもApp Connect機能は提供されていますので、そちらをご活用いただくことも可能です(ただし、現在は非推奨サービスとなってしまっています)。
1.2 MQアダプターを使用した接続登録
この機能では、様々なサービスとの連携のためのアダプター機能を提供しています。
今回は、IBM MQアダプターを使用します。
手順1.0で確認・登録した情報を設定していきます。
認証に成功すると、以下のようにアカウントとして登録されます。
1.3 API flow開発 - エンドポイント
ホーム画面から「Create flows for an API」を選択して、APIフローを開発します。
以下のようなイメージでAPIの名前(api-mq)と、データモデル(user)、プロパティー(id,name,job)を設定していきます。
次に「Operations」タブを選択して、APIの操作を登録していきます。
ここでは、GETとPOSTの2種類の操作を設定していきます。
1.4.1 API flow開発 - POSTフロー
次に2種類の操作に対するフローを開発していきます。
POSTを選択すると、以下のようにフロー開発画面に遷移します。
事前に登録したカタログサービスを組み合わせてLowCodeでフロー開発を実現できます。先ほど登録した「IBM MQ」の「Put message to a queue」を選択します。
この処理でどのような操作を実施するか設定します。以下の例では、「DEV.QUEUE.1」というキューに対して、要求電文をPUTする処理を実施します。
1.4.2 API flow開発 - GETフロー
同様の手順でGETのフローも設定していきます。
接続アダプターは同じく「IBM MQ」ですが、処理内容として「Get message from a queue」を選択します。
このアダプターで取得したデータをJSON Parserを使用してフロー内で認識できるオブジェクトに変換します。
対象データとなるJSON Inputは、IBM MQの「Message payload」をマッピングします。Output SchemaとしてExample JSONで想定されるデータをもとに「Generate Schema」でデータ形式を認識できるようにします。
最後のResponseにて、Response headerとResponse bodyを設定します。
Response bodyには最初に設定したデータモデルのプロパティーが設定されていますので、JSON Parserで認識した各データをマッピングします。
以上で開発は完了です。右上のDoneを押下して、API Designer画面に戻ります。
以下のように右上のStopボタンを押下してフローを「Started」にします。
1.5 API動作確認
「Test」タブから動作確認を実施できます。
この画面からAPIを実施できます。
以下は、「POST /user」の実施例です。
以下は、「GET /user」の実施例です。
先ほど登録されたメッセージを取得することができました。
2. MQとCloudnatとのEvent連携開発
2.0 事前準備 - Cloudant on IBM Cloud環境
今回は、IBM Cloudで提供されているCloudantのフリープランのインスタンスを登録します。
また、App Connectから接続するためのサービス資格情報を登録しておきます。
2.1 Cloudantアダプターを使用した接続登録
カタログから「Cloudant」アダプターを接続します。
step 2.0で確認した資格情報を設定します。
資格情報に問題がなければAccount1として登録されます。
2.2 Event flow開発
ホーム画面から「Create an event-driven flow」を選択して、APIフローを開発します。
以下のようなフロー開発画面に遷移します。
起点となるEventを登録します。今回はIBM MQの「New message on a queue」を選択します。
以下のように設定することで、「DEV.QUEUE.1」にメッセージが新たに到着した際にフローが開始されます。
IBM MQアダプターで取得したメッセージ情報を「JSON Parser」アダプターでフロー上で認識できる形式に変換します。
IBM Cloudantアダプターの「Update or create document」を選択し、データベースへの更新設定を実施します。
以下の例では、「user-mgmt」データベースに対して、QueueメッセージからIDフィールドと合致するドキュメントを更新・登録する処理を実施しています。
以上で開発は終了です。
右上のメニューからフローを開始します。
2.3 Event動作確認
step1で開発したAPIを使用してMQにメッセージを登録します。
登録後すぐに、Eventフローが動作して、「Cloudant」の「user-mgmt」にドキュメントが登録されることが確認できます。
同じIDで再度メッセージを送信すると、Cloudant側に更新が反映されます。
おわりに
この記事では、App ConnectのiPaaS機能を使用してMQとの接続を効率的に開発する方法を紹介いたしました。
同期的なAPIや、非同期的なEventでのMQ連携をiPaaS機能を活用することで、LowCodeで容易に実現することができます。
MQの活用ユースケースを広げる一助となりますので、ぜひご活用いただければと思います。