トリガー操作のためのオブジェクトの管理
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 を使用してプロセス定義を削除したりできます。