IBM MQとは?
IBM MQ は、メッセージ・キューを介してメッセージ・データを送受信することにより、多様なコンピューティング環境(*1)において、アプリケーション同士を様々なタイミングで通信できるようにするメッセージング・ソリューションです。
(*1)オンプレミス、マルチ/ハイブリッドクラウド、異種プラットホーム混在、同種など
MQは豊富な実績を持ち、高可用性構成やTLS暗号化通信もサポートするなど高い信頼性と堅牢性を持つソリューションでもあります。
IBM MQもDb2 LUW同様、2023年に30周年を迎えました。
Db2 LUWにはMQとの連携を実現する機能がDb2の関数(スカラー関数、表関数)として提供されています。
これらの機能により、Db2 SQLを使ってDb2からMQへメッセージを送信したり、MQからメッセージを受信したりできます。
それでは、MQとの連携機能をスカラー関数、表関数別にハイライト的に見ていきましょう。
MQスカラー関数(MQREAD/MQRECEIVE/MQSEND)
(a)MQREAD
MQからVARCHAR型データとしてメッセージを受信します。
受信後キューからメッセージは削除されません。
返すメッセージがない場合は、NULL 値が返されます。
(b)MQRECEIVE
MQ からVARCHAR型データとしてメッセージを受信します。
この操作により、キューから受信メッセージが削除されます。
返すメッセージがない場合は、NULL 値が返されます。
(c)MQSEND
VARCHAR型データをMQへ送信します。
戻り値(VARCHAR(1)型)は、成功した場合は 1、失敗した場合は 0 です。
MQSEND使用例
下記はSELECT文にメッセージ送信処理 (MQSEND)を組み込んだ例です。
SELECT DB2MQ1C.MQSEND (LASTNAME || ' ' || FIRSTNAME || ' ' || DEPARTMENT)
FROM EMPLOYEE WHERE DEPARTMENT = '5LGA';
COMMIT;
(補足)
MQSENDのスキーマ名’DB2MQ1C’は、1フェーズ・コミット・トランザクションのMQ関数を意味しています。
非トランザクションMQ関数の場合は スキーマ名は’DB2MQ’です。
MQスカラー関数(MQPUBLISH/MQSUBSCRIBE/MQUNSUBSCRIBE)
MQのパブリッシュ(情報のプロバイダー)とサブスクライブ(情報のコンシューマー)に対応した関数もあります。
(a)MQPUBLISH
VARCHAR型データを MQ にパブリッシュします。
戻り値(VARCHAR(1)型)は、成功した場合は 1、失敗した場合は 0 です。
(b)MQSUBSCRIBE
サブスクライブ(購読)したいトピックをMQに登録します。
戻り値(VARCHAR(1)型)は、成功した場合は 1、失敗した場合は 0 です。
トピックに一致するメッセージは、MQREAD、MQRECEIVE、MQREADALL、または MQRECEIVEALLの呼び出しによって読み取りまたは受信できます。
MQSUBSCRIBE使用例
この例では、トピック”Weather”を含むメッセージをサブスクライブします。
VALUES MQSUBSCRIBE(‘Weather’);
(c)MQUNSUBSCRIBE
既存のサブスクリプションを解除します。
戻り値(VARCHAR(1)型)は、成功した場合は 1、失敗した場合は 0 です。
MQ表関数(MQREADALL/MQRECEIVEALL)
MQ表関数(テーブル関数)には、以下が含まれています。
(a)MQREADALL
MQからVARCHAR型データとしてメッセージ、そのメッセージのメタデータ(相関ID、トピック、キュー名、メッセージID、メッセージ・フォーマット)などを受信し、Db2の表として返します。 この操作では、受信メッセージはキューから削除されません。
MQREADALL使用例
この例では、キューからすべてのメッセージを受信します。
メッセージとそのメタデータが表として返されます。
SELECT * FROM TABLE (MQREADALL()) AS T ;
(b)MQRECEIVEALL
MQからVARCHAR型データとしてメッセージ、そのメッセージのメタデータなどを受信し、Db2の表として返します。 この操作では、受信メッセージはキューから削除されます。
今回はIBM MQとの統合を実現する代表的なDb2の機能を簡単にご紹介しました。
提供されている機能や使い方の詳細、考慮点(例:2フェーズコミットには対応していない)などはDb2マニュアルのトピック”WebSphere MQ and DB2 user-defined functions”、”Commit Environment for Db2 WebSphere MQ functions”をご参照ください。
この記事での説明は割愛しましたが、MQとの統合機能を利用するためには、事前準備作業が必要となっています。
こちらに関しては、Db2マニュアルのトピック” Installing and using the DB2 WebSphere MQ functions”などをご参照ください。