トリガー操作のためのオブジェクトの管理

IBM® MQ キュー上の特定の条件が満たされたときに、自動的にアプリケーションを開始することができます。 その条件の一例として、キュー上のメッセージ数が指定の数に達した場合があります。 この機能は、トリガー操作 と呼ばれています。 トリガー操作をサポートしているオブジェクトを定義する必要があります。

トリガーについては IBM MQ Starting applications using triggers で詳しく説明されている。

トリガー操作のためのアプリケーション・キューの定義

アプリケーション・キューとは、アプリケーションが MQI を介してメッセージ用に使用するローカル・キューのことです。 トリガー操作では、いくつかのキュー属性をアプリケーション・キューに定義する必要があります。

トリガー操作自体は、Trigger 属性 (MQSC コマンドの中の TRIGGER) によって使用可能になります。 以下に示す例では、トリガー・イベントは、MOTOR.INSURANCE.QUEUE というローカル・キューに優先順位 5 以上のメッセージが 100 個入れられたときに生成されます。
DEFINE QLOCAL (MOTOR.INSURANCE.QUEUE) +
PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS) +
MAXMSGL (2000) +
DEFPSIST (YES) +
INITQ (MOTOR.INS.INIT.QUEUE) +
TRIGGER +
TRIGTYPE (DEPTH) +
TRIGDPTH (100)+
TRIGMPRI (5)
ここで、
QLOCAL (MOTOR.INSURANCE.QUEUE)
定義するアプリケーション・キューの名前です。
PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS)
トリガー・モニター・プログラムで開始されるアプリケーションを定義するプロセス定義の名前です。
MAXMSGL (2000)
キューに入れるメッセージの最大長です。
DEFPSIST (YES)
デフォルトでメッセージをこのキュー上で存続させるように指定します。
INITQ (MOTOR.INS.INIT.QUEUE)
キュー・マネージャーがトリガー・メッセージを入れる開始キューの名前です。
TRIGGER
トリガー属性値です。
TRIGTYPE (DEPTH)
要求した優先順位 (TRIGMPRI) を持つメッセージの数が TRIGDPTH で指定した数に達したときにトリガー・イベントを生成するように指定します。
TRIGDPTH (100)
トリガー・イベントを生成するのに必要なメッセージ数です。
TRIGMPRI (5)
トリガー・イベントを生成するかどうかを決める際に、キュー・マネージャーが考慮に入れるメッセージの優先順位です。 優先度 5 以上のメッセージだけが考慮に入れられます。

開始キューの定義

トリガー・イベントが発生すると、キュー・マネージャーは、アプリケーション・キュー定義に指定された開始キューにトリガー・メッセージを入れます。 開始キューには特別の設定値はありませんが、参考として以下に示す MOTOR.INS.INIT.QUEUE というローカル・キューの定義を使用することができます。
DEFINE QLOCAL(MOTOR.INS.INIT.QUEUE) +
GET (ENABLED) +
NOSHARE +
NOTRIGGER +
MAXMSGL (2000) +
MAXDEPTH (1000)

プロセスの定義

プロセス定義を作成するには、DEFINE PROCESS コマンドを使用します。 プロセス定義は、アプリケーション・キューからメッセージを処理するために使用されるようにアプリケーションを定義します。 アプリケーション・キュー定義は、使用されるプロセスを命名することによって、そのメッセージを処理するために使用されるアプリケーションとアプリケーション・キューを関連付けます。 この関連付けは、アプリケーション・キュー MOTOR.INSURANCE.QUEUE の PROCESS 属性によって行われます。 次の MQSC コマンドは、この例で識別されている必須プロセス MOTOR.INSURANCE.QUOTE.PROCESS を定義します。
DEFINE PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS) +
DESCR ('Insurance request message processing') +
APPLTYPE (UNIX) +
APPLICID ('/u/admin/test/IRMP01') +
USERDATA ('open, close, 235')
説明
MOTOR.INSURANCE.QUOTE.PROCESS
プロセス定義の名前です。
DESCR ('Insurance request message processing')
この定義を関連付けるアプリケーション・プログラムの記述です。 このテキストは、DISPLAY PROCESS コマンドを使用すると表示されます。 これは、プロセスが行う事柄を識別するのに役立ちます。 ストリングの中でスペースを使用する場合は、ストリングを単一引用符で囲む必要があります。
APPLTYPE (UNIX)
開始するアプリケーションのタイプです。
APPLICID ('/u/admin/test/IRMP01')
アプリケーションの実行可能プログラムの名前で、完全修飾ファイル名として指定されます。 Windows システムでは、標準的な APPLICID 値は c:\appl\test\irmp01.exeです。
USERDATA ('open, close, 235')
アプリケーションで使用できるユーザー定義のデータです。

プロセス定義の属性を定義する

定義の結果を調べるには、DISPLAY PROCESS コマンドを使用します。 以下に例を示します。
DISPLAY PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS)


24 : DISPLAY PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS) ALL
AMQ8407: Display Process details.
DESCR ('Insurance request message processing')
APPLICID ('/u/admin/test/IRMP01')
USERDATA (open, close, 235)
PROCESS (MOTOR.INSURANCE.QUOTE.PROCESS)
APPLTYPE (UNIX)

MQSC コマンド ALTER PROCESS を使用して既存のプロセス定義を変更したり、DELETE PROCESS を使用してプロセス定義を削除したりできます。