ACM連携サービスを利用することにより、他サーバ(UNIXサーバ、Windowsサーバまたはグローバルサーバ)上のアプリケーションとの間で、サーバ間のメッセージ交換を実現できます。
アプリケーションは、サーバ間のメッセージ転送を意識することなく、サーバ内の通信と同様にメッセージ交換を行うことができます。
ACM連携サービスでのメッセージ交換のモデル(サーバ間)を図10.2 サーバ間のメッセージ交換のモデルに示します。
図10.2 サーバ間のメッセージ交換のモデル
アプリケーションAは要求メッセージをメッセージキューa1に送信します。
要求メッセージはメッセージキューa1に対応するメッセージキューb1にMQDによって転送されます。
アプリケーションBはメッセージキューb1から要求メッセージを受信し、応答メッセージをメッセージキューb2に送信します。
応答メッセージはメッセージキューb2に対応するメッセージキューa2にMQDによって転送されます。
最後に、アプリケーションAはメッセージキューa2から応答メッセージを受信することで要求/応答型のメッセージ交換が実現できます。
サーバ間のメッセージ交換を行うためには、事前にIDCMのDPCF通信パスを確立する必要があります。DPCF通信パスの確立の操作方法については、“OS IV IDCM使用手引書”、“IDCM使用手引書”、および“IDCMヘルプ”を参照してください。
サーバ間のメッセージ交換では、メッセージ送信および受信するために以下のメッセージキューを使用します。
送信キュー
受信キュー
送信キューとは、メッセージ送信するために使用するメッセージキューです。一つの送信キューに対して、一つの受信キューを対応づけます。一つの送信キューに対して、複数の受信キューを対応づけることはできません。また、ディスク型のメッセージキューとメモリ型のメッセージキューを対応付けることはできません。
受信キューは、メッセージ受信するために使用するメッセージキューです。一つの受信キューに対して、複数の送信キューを対応づけることができます。複数の送信キューと対応づけることにより、複数のサーバ上のMQDまたはグローバルサーバ上のAIMから一つのサーバ上のMQDに対してメッセージ送信する集信型のメッセージ交換が実現できます。送信キューと受信キューの対応関係について、図10.3 送信キューと受信キューの対応関係に示します。
図10.3 送信キューと受信キューの対応関係
送信キューと受信キューの対応関係は、ACM連携サービスの環境定義で指定します。詳細については、“10.3 環境作成”を参照してください。
送信キューと受信キューの結合は、以下の契機で自動的に行われます。
[AIM特化型ACMとメッセージ交換を行う場合]
DPCF通信パスが確立されている状態で、自サーバのACM連携サービスおよびグローバルサーバ上のACMコミュニケータを起動した契機
自サーバのACM連携サービスおよびグローバルサーバ上のACMコミュニケータを起動している状態で、DPCF通信パスを確立した契機
[MQDとメッセージ交換を行う場合]
DPCF通信パスが確立されている状態で、自サーバのACM連携サービスおよび相手サーバのACM連携サービスを起動した契機
自サーバのACM連携サービスおよび相手サーバのACM連携サービスを起動している状態で、DPCF通信パスを確立した契機
[MQD MQゲートウェイとメッセージ交換を行う場合]
DPCF通信パスが確立されている状態で、自サーバのACM連携サービスおよび相手サーバのMQD MQゲートウェイのMQゲートウェイサービス(以降、MQゲートウェイサービスと呼びます)を起動した契機
自サーバのACM連携サービスおよび相手サーバのMQゲートウェイサービスを起動している状態で、DPCF通信パスを確立した契機
MQDとMQD MQゲートウェイが同一サーバ内で通信を行う場合は、ACM連携サービスおよびMQゲートウェイサービスを起動した契機
また、一つのサーバ内で複数のMQDシステムを運用する場合、以下の注意点があります。
自サーバ内の一つのMQDシステムとメッセージ交換可能な、一つの相手サーバ内のMQDシステム、MQD MQゲートウェイおよびAIM特化型ACMは一つです。
自サーバ内の一つのMQDシステムとメッセージ交換可能な、自サーバ内のMQDシステムおよびMQD MQゲートウェイは一つです。
サーバ間でメッセージ送信する機能です。ACM連携サービスの環境定義で、メッセージキューをACM連携サービスの送信キューとして定義して、その送信キューと相手サーバの受信キューの対応関係を定義することで、自サーバのMQDから相手サーバにメッセージ送信されます。
サーバ間のメッセージ送信の流れを図10.4 メッセージ送信の流れに示します。
図10.4 メッセージ送信の流れ
[図の説明]
メッセージキュー(送信キュー)から、送信メッセージを取り出します。
IDCMを使用して相手サーバの受信キューにメッセージを送信します。
ACM連携サービスのメッセージ送信機能を使用する場合、以下の点に注意してください。
最大メッセージ長
相手サーバにメッセージ送信する場合の最大メッセージ長は32000バイトです。最大メッセージ長を超えるメッセージを送信した場合は、相手サーバへのメッセージ送信は処理されず、エラーメッセージ(MQD3353 原因コード=QMNG、復帰コード=37)が出力されます。また、それ以降に送信要求したメッセージはすべて相手サーバに送信されず、送信キューに滞留します。エラーメッセージの対処にしたがって、メッセージ送信を再開してください。
ユニット
ACM連携サービスのメッセージ送信ではユニット機能は利用できません。
複数メッセージを一つのユニットで送信した場合は、相手サーバにメッセージ送信されますが、ユニット情報は相手サーバのアプリケーションには通知されません。ユニット機能については、“2.1.3 ユニット”を参照してください。
相手サーバからのメッセージを受信する機能です。相手サーバの環境定義で、送信キューと受信キューの対応関係を定義します。ACM連携サービスは、この定義で対応づけられた送信キューからメッセージを受信し、該当の受信キューにメッセージを格納します。
サーバ間のメッセージ受信の流れを図10.5 メッセージ受信の流れに示します。
図10.5 メッセージ受信の流れ
[図の説明]
IDCMを使用して相手サーバからのメッセージを受信します。
プロトコル情報の送信キューと受信キューの対応関係から受信キューを特定し、メッセージを格納します。
AIM特化型ACM、またはMQD MQゲートウェイと連携したメッセージ交換では、相手サーバのアプリケーションにメッセージヘッダが通知されません。AIM特化型ACMまたはMQD MQゲートウェイ連携時のメッセージヘッダに対する処理内容について以下に説明します。なお、UNIXサーバおよびWindowsサーバ上のMQDと連携した場合のメッセージヘッダについては、“8.2.32 メッセージヘッダ”を参照してください。
メッセージ送信
メッセージ送信ときは、送信キューより取り出したメッセージのメッセージヘッダ部分を取り除き、メッセージ本体だけを相手サーバに送信します。
メッセージ受信
相手サーバよりメッセージ受信した場合は、メッセージヘッダを自動生成し、メッセージの先頭に付加して、受信キューに格納します。
図10.6 メッセージヘッダの取り扱いにAIM特化型ACMおよびMQD MQゲートウェイと連携した場合のメッセージヘッダの取り扱いについて示します。
図10.6 メッセージヘッダの取り扱い
次に、相手サーバからメッセージ受信した時、ACM連携サービスが自動生成するメッセージヘッダの内容について、表10.1 メッセージ受信時のメッセージヘッダの内容に示します。
項目名 | 和名 | データ型 | 設定値 |
---|---|---|---|
MSG-TYPE | メッセージタイプ | PIC X(1) | X’02’ |
CODE-TYPE | コード系情報 | PIC X(1) |
|
BODY-CODE | メッセージ本体のコード系情報 | PIC X(1) | X’00’: 文字コード変換を使用しない場合
|
UNIT-ID | ユニット識別子 | PIC X(128) | タイムスタンプ.スレッドID.プロセスID.キュー名.MQDシステム名 |
MSG-SERIALNO | メッセージ通番 | PIC 9(9) | 1 |
EOU-FLAG | ユニット終了フラグ | PIC X(1) | X’00’ |
ORIGINAL-SYSNAME | 送信MQDシステム名 | PIC X(9) | DPCF通信パス名 |
VERSION | バージョン | PIC X(8) | “1.1” |
ORIGINAL-QNAME | 送信キュー名 | PIC X(64) | 送信用メッセージキュー名(論理あて先、またはMQSeriesのキュー名) |
GUARANTEE | メッセージ保証レベル | PIC X(1) | X’02’ |
ORIGINAL-TIMESTAMP | 送信タイムスタンプ | PIC 9(9) | 0 |
TRANS-TIMESTAMP | 転送タイムスタンプ | PIC 9(9) | 0 |
ARRIVE-TIMESTAMP | 到着タイムスタンプ | PIC 9(9) | ACM連携サービスがメッセージを受信した時刻 |
DELAY-TIME | 転送遅延時間 | PIC 9(9) | 0 |
QUEUING-TIME | キューイング時間 | PIC 9(9) | ACM連携サービスがメッセージを受信してからアプリケーションがメッセージを受信するまでの時刻 |
MSG-NAME | メッセージ名 | PIC X(64) | “ACOM” |
MSG-ID | メッセージ識別子 | PIC 9(9) | 0 |
PRIORITY | プライオリティ | PIC 9(9) | 相手サーバから受信したプライオリティ値 |
MSGBODY-LENGTH | メッセージ本体長 | PIC 9(9) | 相手サーバから受信したメッセージ長 |
RETURN-QNAME | 返信キュー名 | PIC X(64) | 空白 |
TIMELIMIT | 最大保存時間 | PIC 9(9) | 0 |
ACCESS-RIGHT | アクセス権 | PIC 9(9) | 0 |
注) 項目名とデータ型はCOBOLの場合の例です。