Message のプロパティー

Message オブジェクトのプロパティーの概要と、詳細な参照情報へのリンクを示します。

表 1. Message のプロパティー
プロパティー名 説明
JMS_IBM_CHARACTER_SET XMS クライアントがメッセージを目的の宛先に転送するときに、メッセージの本文中の文字データのストリングが入っているコード化文字セットの ID (CCSID)、またはコード・ページ。 XMSでは、このプロパティーは数値を持ち、CCSID にマップされます。 ただし、このプロパティーは JMS プロパティーに基づいているため、ストリング・タイプ値を持ち、この数値 CCSID を表す Java 文字セットにマップされます。
JMS_IBM_ENCODING XMS クライアントがメッセージを目的の宛先に転送するときに、メッセージ本体の数値データがどのように表されるか。
JMS_IBM_EXCEPTIONMESSAGE メッセージが例外の宛先に送信された理由を説明するテキストです。 このプロパティーは読み取り専用です。
JMS_IBM_EXCEPTIONPROBLEMDESTINATION メッセージが例外の宛先に送信される前に、そのメッセージが存在した宛先の名前です。
JMS_IBM_EXCEPTIONREASON メッセージが例外の宛先に送信された理由を示す理由コードです。
JMS_IBM_EXCEPTIONTIMESTAMP メッセージが例外の宛先に送信された時刻です。
JMS_IBM_FEEDBACK レポート・メッセージの種類を示すコードです。
JMS_IBM_FORMAT メッセージ内にあるアプリケーション・データの種類です。
JMS_IBM_LAST_MSG_IN_GROUP メッセージがメッセージ・グループ内の最後のメッセージであるかどうかを示します。
JMS_IBM_MSGTYPE メッセージのタイプ。
JMS_IBM_PUTAPPLTYPE メッセージを送信したアプリケーションのタイプです。
JMS_IBM_PUTDATE メッセージが送信された日付です。
JMS_IBM_PUTTIME メッセージが送信された時刻です。
JMS_IBM_REPORT_COA 「到着時の確認」レポート・メッセージを要求し、元のメッセージからのアプリケーション・データをレポート・メッセージにどの程度組み込む必要があるかを指定します。
JMS_IBM_REPORT_COD 「配信時の確認」レポート・メッセージを要求し、元のメッセージからのアプリケーション・データをレポート・メッセージにどの程度組み込む必要があるかを指定します。
JMS_IBM_REPORT_DISCARD_MSG メッセージを目的の宛先に配信できない場合に、そのメッセージを廃棄することを要求します。
JMS_IBM_REPORT_EXCEPTION 例外レポート・メッセージを要求し、元のメッセージからのアプリケーション・データをレポート・メッセージにどの程度組み込む必要があるかを指定します。
JMS_IBM_REPORT_EXPIRATION 期限満了レポート・メッセージを要求し、元のメッセージからのアプリケーション・データをレポート・メッセージにどの程度組み込む必要があるかを指定します。
JMS_IBM_REPORT_NAN 否定アクション通知レポート・メッセージを要求します。
JMS_IBM_REPORT_PAN 肯定アクション通知レポート・メッセージを要求します。
JMS_IBM_REPORT_PASS_CORREL_ID 任意のレポート・メッセージまたは応答メッセージの相関 ID を元のメッセージの相関 ID と同じにするという要求です。
JMS_IBM_REPORT_PASS_MSG_ID 任意のレポート・メッセージまたは応答メッセージのメッセージ ID を元のメッセージのメッセージ ID と同じにするという要求です。
JMS_IBM_RETAIN このプロパティーを設定すると、キュー・マネージャーは、メッセージを保存パブリケーションとして扱うように指定されます。
JMS_IBM_SYSTEM_MESSAGEID サービス統合バスの内部でメッセージを一意的に識別する ID です。 このプロパティーは読み取り専用です。
JMSX_APPID メッセージを送信したアプリケーションの名前です。
JMSX_DELIVERY_COUNT メッセージ配信の試行回数です。
JMSX_GROUPID メッセージが属するメッセージ・グループの ID です。
JMSX_GROUPSEQ メッセージ・グループ内にあるメッセージのシーケンス番号です。
JMSX_USERID メッセージを送信したアプリケーションに関連付けられているユーザー ID です。

JMS_IBM_MQMD* プロパティー

IBM® Message Service Client for .NET により、クライアント・アプリケーションは API を使用して MQMD フィールドの読み取り/書き込みを行うことができます。 また、MQ メッセージ・データにアクセスすることもできます。 デフォルトでは、MQMD へのアクセスは無効になっており、Destination のプロパティー XMSC_WMQ_MQMD_WRITE_ENABLED と XMSC_WMQ_MQMD_READ_ENABLED を使用してアプリケーションで明示的に有効にする必要があります。 これらの 2 つのプロパティーは互いに独立しています。

StrucId と Version を除く MQMD フィールドはすべて、追加の Message オブジェクト・プロパティーとして公開され、JMS_IBM_MQMD というプレフィックスが付けられます。

JMS_IBM_MQMD* プロパティーは、上の表で取り上げられている他のプロパティー (JMS_IBM* など) より優先されます。

メッセージの送信

StrucId と Version を除くすべての MQMD フィールドが表されます。 これらのプロパティーは MQMD フィールドのみを参照しています。このフィールドでは、MQMD ヘッダーと MQRFH2 ヘッダーの両方でプロパティーが発生し、MQRFH2 のバージョンは設定も抽出もされません。 JMS_IBM_MQMD_BackoutCount を除き、これらのすべてのプロパティーを設定できます。 JMS_IBM_MQMD_BackoutCount に設定された値はすべて無視されます。

プロパティーが最大長を持っていて、長過ぎる値が提供された場合、その値は切り捨てられます。

特定のプロパティーでは、Destination オブジェクトで XMSC_WMQ_MQMD_MESSAGE_CONTEXT プロパティーも設定する必要があります。 このプロパティーが有効となるためには、アプリケーションが適切なコンテキスト権限を持って実行されていなければなりません。 XMSC_WMQ_MQMD_MESSAGE_CONTEXT を適切な値に設定しないと、プロパティー値は無視されます。 XMSC_WMQ_MQMD_MESSAGE_CONTEXT を適切な値に設定しても、キュー・マネージャーに対して十分なコンテキスト権限がない場合は、例外が発行されます。 XMSC_WMQ_MQMD_MESSAGE_CONTEXT の特定の値が必要なプロパティーは以下のとおりです。

以下のプロパティーでは、XMSC_WMQ_MQMD_MESSAGE_CONTEXT を XMSC_WMQ_MDCTX_SET_IDENTITY_CONTEXT または XMSC_WMQ_MDCTX_SET_ALL_CONTEXT に設定する必要があります。
  • JMS_IBM_MQMD_UserIdentifier
  • JMS_IBM_MQMD_AccountingToken
  • JMS_IBM_MQMD_ApplIdentityData
以下のプロパティーでは、XMSC_WMQ_MQMD_MESSAGE_CONTEXT を XMSC_WMQ_MDCTX_SET_ALL_CONTEXT に設定する必要があります。
  • JMS_IBM_MQMD_PutApplType
  • JMS_IBM_MQMD_PutApplName
  • JMS_IBM_MQMD_PutDate
  • JMS_IBM_MQMD_PutTime
  • JMS_IBM_MQMD_ApplOriginData

メッセージの受信

XMSC_WMQ_MQMD_READ_ENABLED プロパティーが true に設定されていれば、メッセージを作成するアプリケーションで設定されている実際のプロパティーに関係なく、受信するメッセージでこれらのプロパティーがすべて有効になります。 JMS 仕様によれば、最初にプロパティーをすべてクリアしない限り、アプリケーションでは、受信したメッセージのプロパティーを変更できません。 プロパティーを変更せずに、受信メッセージを転送することができます。
注: アプリケーションが XMSC_WMQ_MQMD_READ_ENABLED プロパティーが true に設定された宛先からメッセージを受信し、それを XMSC_WMQ_MQMD_WRITE_ENABLED が true に設定された宛先に転送すると、受信したメッセージのすべての MQMD フィールド値が転送メッセージにコピーされます。 プロパティーの表
表 2. MQMD フィールドを表す Message オブジェクトのプロパティー
Property 説明 タイプ
JMS_IBM_MQMD_REPORT レポート・メッセージのオプション System.Int32
JMS_IBM_MQMD_MSGTYPE メッセージ・タイプ System.Int32
JMS_IBM_MQMD_EXPIRY メッセージの存続時間 System.Int32
JMS_IBM_MQMD_FEEDBACK フィードバックまたは理由コード System.Int32
JMS_IBM_MQMD_ENCODING メッセージ・データの数値エンコード System.Int32
JMS_IBM_MQMD_CODEDCHARSETID メッセージ・データの文字セット ID System.Int32
JMS_IBM_MQMD_FORMAT メッセージ・データの形式名。 System.String
JMS_IBM_MQMD_PRIORITY
注: 0 から 9 の範囲内にない値を JMS_IBM_MQMD_PRIORITY に割り当てると、この値は JMS 仕様に違反します。
メッセージ優先順位 System.Int32
JMS_IBM_MQMD_PERSISTENCE メッセージの持続性 System.Int32
JMS_IBM_MQMD_MSGID
注: JMS 仕様では、メッセージ ID は JMS プロバイダーによって設定される必要があり、固有またはヌルでなければならないことが規定されています。 JMS_IBM_MQMD_MSGID に値を割り当てると、この値は JMSMessageID にコピーされます。 つまり、値が JMS プロバイダーによって設定されず、固有の値でなくなる可能性があります。その場合は、JMS 仕様違反になります。
メッセージ ID バイト配列
注: メッセージでバイト配列プロパティーを使用すると、JMS 仕様に違反します。
JMS_IBM_MQMD_CORRELID
注: ストリング「ID:」で始まる値を JMS_IBM_MQMD_CORRELID に割り当てると、この値は JMS 仕様に違反します。
相関 ID バイト配列
注: メッセージでバイト配列プロパティーを使用すると、JMS 仕様に違反します。
JMS_IBM_MQMD_BACKOUTCOUNT バックアウトのカウンター System.Int32
JMS_IBM_MQMD_REPLYTOQ 応答キューの名前 System.String
JMS_IBM_MQMD_REPLYTOQMGR 応答キュー・マネージャーの名前 System.String
JMS_IBM_MQMD_USERIDENTIFIER ユーザー ID System.String
JMS_IBM_MQMD_ACCOUNTINGTOKEN アカウンティング・トークン バイト配列
注: メッセージでバイト配列プロパティーを使用すると、JMS 仕様に違反します。
JMS_IBM_MQMD_APPLIDENTITYDATA ID に関連するアプリケーション・データ System.String
JMS_IBM_MQMD_PUTAPPLTYPE メッセージを書き込んだアプリケーションのタイプ System.Int32
JMS_IBM_MQMD_PUTAPPLNAME メッセージを書き込むアプリケーションの名前 System.String
JMS_IBM_MQMD_PUTDATE メッセージを書き込んだ日付 System.String
JMS_IBM_MQMD_PUTTIME メッセージを書き込んだ時刻 System.String
JMS_IBM_MQMD_APPLORIGINDATA 発生元に関係するアプリケーション・データ System.String
JMS_IBM_MQMD_GROUPID グループ ID バイト配列
注: メッセージでバイト配列プロパティーを使用すると、JMS 仕様に違反します。
JMS_IBM_MQMD_MSGSEQNUMBER グループ内のローカル・メッセージのシーケンス番号 System.Int32
JMS_IBM_MQMD_OFFSET 論理メッセージの先頭を起点とする、物理メッセージ中のデータのオフセット System.Int32
JMS_IBM_MQMD_MSGFLAGS メッセージ・フラグ System.Int32
JMS_IBM_MQMD_ORIGINALLENGTH 元のメッセージの長さ System.Int32

詳細はMQMDを参照。

この例では、MQMD.UserIdentifier が「JoeBloggs」に設定されたキューまたはトピックにメッセージが書き込まれます。

  // Create a ConnectionFactory, connection, session, producer, message
  // ...

  // Create a destination
  // ...

  // Enable MQMD write
  dest.setBooleanProperty(XMSC_WMQ_MQMD_WRITE_ENABLED, 
		XMSC_WMQ_MQMD_WRITE_ENABLED_YES);
  
  // Optionally, set a message context if applicable for this MD field
  dest.setIntProperty(XMSC_WMQ_MQMD_MESSAGE_CONTEXT, 
    XMSC_WMQ_MDCTX_SET_IDENTITY_CONTEXT);

  // On the message, set property to provide custom UserId
  msg.setStringProperty(JMS_IBM_MQMD_USERIDENTIFIER, "JoeBloggs");

  // Send the message
  // ...

JMS_IBM_MQMD_USERIDENTIFIER を設定する前に、XMSC_WMQ_MQMD_MESSAGE_CONTEXT を設定する必要があります。 XMSC_WMQ_MQMD_MESSAGE_CONTEXT の使用の詳細については、Message オブジェクト・プロパティーを参照してください。

同様に、メッセージを受信する前に XMSC_WMQ_MQMD_READ_ENABLED を true に設定してから、メッセージの get メソッド (getStringProperty など) を使用することによって、MQMD フィールドの内容を抽出できます。 受信するプロパティーはすべて読み取り専用です。

この例では、メッセージの MQMD.ApplIdentityData フィールドの値を保持する値フィールドがキューまたはトピックから取得されます。

  // Create a ConnectionFactory, connection, session, consumer
  // ...

  // Create a destination
  // ...

  // Enable MQMD read
  dest.setBooleanProperty(XMSC_WMQ_MQMD_READ_ENABLED, XMSC_WMQ_MQMD_READ_ENABLED_YES);

  // Receive a message
  // ...

  // Get required MQMD field value using a property
  System.String value = rcvMsg.getStringProperty(JMS_IBM_MQMD_APPLIDENTITYDATA);