3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Db2 SQLでIBM MQと送受信:Db2のMQ連携機能ご紹介

Last updated at Posted at 2023-04-03

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”などをご参照ください。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?