Package nablarch.fw.messaging
Class InterSystemMessage<TSelf extends InterSystemMessage<?>>
java.lang.Object
nablarch.fw.messaging.InterSystemMessage<TSelf>
- Type Parameters:
TSelf
- 各具象クラスの型
- Direct Known Subclasses:
ReceivedMessage
,SendingMessage
外部システムに対する送受信電文の内容を格納するデータオブジェクト。
このオブジェクトは以下のデータを保持する。
- プロトコルヘッダー
- メッセージボディ
プロトコルヘッダー
プロトコルヘッダーはMOM間のメッセージ転送制御に関連する制御情報であり、 MOM側で自動的に解析される。 これらの情報の多くは、MOM製品に依存した仕様であるため、本フレームワークは プロトコルヘッダーに極力依存しない設計となっている。
本フレームワークが直接使用するプロトコルヘッダーは以下の5つのみである。- メッセージIDヘッダ
- 関連メッセージIDヘッダ
- 送信宛先ヘッダ
- 応答宛先ヘッダ
- メッセージ有効期間ヘッダ (送信電文のみ)
メッセージボディ
プロトコルヘッダーを除いた電文のデータ部をメッセージボディと呼ぶ。 メッセージボディ部は、MOM側では単にバイナリデータとして扱うものとし、 解析は全てフレームワーク側で行う。
メッセージボディのフォーマットは nablarch.core.dataformat パッケージが提供する 機能を用いて定義する。解析後の電文はList-Map形式でアクセスすることが可能である。
メッセージボディ内は通常、以下に示すような階層構造をもち、その解析は各階層に 対応したデータリーダもしくはハンドラによって段階的に行われる。- フレームワーク制御ヘッダ
- 業務共通ヘッダ
- 業務データ
クラス構成
このクラスは各電文クラスに共通する機能やデータ構造を実装するものの、 直接インスタンスを作成することはできない。 これは、Jakarta Messagingのjakarta.jms.Messageのような汎用メッセージオブジェクトを使いまわすのではなく、 その用途に応じて以下の4つの具象クラスを使いわける設計となっているためである。
- ReceivedMessage (受信メッセージ)
- SendingMessage (送信メッセージ)
- RequestMessage (被仕向け要求受信メッセージ) : ReceivedMessageのサブクラス
- ResponseMessage (応答送信メッセージ) : SendingMessageのサブクラス
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final class
フレームワークで使用する既定ヘッダーのフィールド名 -
Constructor Summary
ConstructorDescriptionデフォルトコンストラクタInterSystemMessage
(InterSystemMessage<?> orgMessage) コピーコンストラクタ -
Method Summary
Modifier and TypeMethodDescriptionabstract byte[]
メッセーボディのバイナリ表現を返す。 送信(仕向)電文の場合はデータレコードをレコードフォーマッタで直列化したものを返す。 受信(被仕向)電文の場合はパース前の送信電文の内容をそのまま返す。この電文に関連付けられているメッセージのメッセージIDを返す。この電文の宛先キューの論理名を取得する。 MessagingContext.send(SendingMessage) メソッドでは、この戻り値に対応する 宛先に送信される。メッセージボディのフォーマット定義を返す。<T> T
ヘッダーの値を返す。ヘッダーの一覧をMap形式で返す。この電文に割り当てられた識別子(メッセージID)を返す。 メッセージIDは電文送信時にMOMによって自動的に割り振られるため、 書式や一意性の範囲は製品依存となる。 また、送信前の電文にはnullが設定されている。電文のデータ部の末尾レコードの中から指定されたフィールドの値を取得して返す。電文のデータ部の末尾レコードを返す。getRecordOf
(String recordType) 指定された種別のレコードを返す。 複数存在する場合は、その先頭のレコードを返す。 存在しない場合はnullを返す。メッセージボディに含まれる全レコードを返す。getRecordsOf
(String recordType) メッセージボディに含まれる指定された種別の全レコードを返す。 該当するレコードが存在しない場合は空のリストを返す。応答宛先キューの論理名を返す。setCorrelationId
(String messageId) この電文に既存のメッセージのIDを関連付ける。setDestination
(String destination) 送信宛先キューの論理名を設定する。setFormatter
(DataRecordFormatter formatter) メッセージボディのフォーマット定義を設定する。ヘッダーの値を設定する。setHeaderMap
(Map<String, ?> headers) ヘッダーの一覧を設定する。 (既存のヘッダーは全て削除される。)setMessageId
(String messageId) メッセージIDを設定する。 メッセージIDはMOM側で採番される値であり、 このメソッドは単体テスト用に便宜的に容易されているものである。setReplyTo
(String replyTo) この電文に対する応答宛先となるキューの論理名を設定する。
-
Constructor Details
-
InterSystemMessage
public InterSystemMessage()デフォルトコンストラクタ -
InterSystemMessage
コピーコンストラクタ- Parameters:
orgMessage
- コピー元電文
-
-
Method Details
-
setFormatter
メッセージボディのフォーマット定義を設定する。- Parameters:
formatter
- フォーマット定義オブジェクト- Returns:
- このオブジェクト自体
-
getFormatter
メッセージボディのフォーマット定義を返す。- Returns:
- メッセージボディのフォーマット定義
-
getRecordOf
指定された種別のレコードを返す。 複数存在する場合は、その先頭のレコードを返す。 存在しない場合はnullを返す。- Parameters:
recordType
- レコード名- Returns:
- 指定した種別のデータレコード (存在しない場合はnull)
-
getRecords
メッセージボディに含まれる全レコードを返す。- Returns:
- メッセージボディに含まれる全てのレコード
-
getRecordsOf
メッセージボディに含まれる指定された種別の全レコードを返す。 該当するレコードが存在しない場合は空のリストを返す。- Parameters:
recordType
- レコード種別- Returns:
- メッセージボディに含まれる指定された種別の全レコード
-
getParamMap
電文のデータ部の末尾レコードを返す。 主にシングルレコード形式の電文で使用することを想定している。 レコードが存在しない場合はnullを返す。- Returns:
- 受信電文内の各フィールドの値を格納したMap
-
getParam
電文のデータ部の末尾レコードの中から指定されたフィールドの値を取得して返す。 主にシングルレコード形式の電文で使用することを想定している。 レコードが存在しない場合、もしくは、レコードに指定された項目が存在しない 場合はnullを返す。 。- Parameters:
name
- 取得するフィールドの名称- Returns:
- フィールドの値
-
getBodyBytes
public abstract byte[] getBodyBytes()メッセーボディのバイナリ表現を返す。 送信(仕向)電文の場合はデータレコードをレコードフォーマッタで直列化したものを返す。 受信(被仕向)電文の場合はパース前の送信電文の内容をそのまま返す。- Returns:
- メッセーボディのバイナリ表現
-
getHeaderMap
ヘッダーの一覧をMap形式で返す。- Returns:
- ヘッダーの一覧
-
getHeader
ヘッダーの値を返す。- Type Parameters:
T
- 期待するヘッダの型- Parameters:
headerName
- 値を取得するヘッダーの名前- Returns:
- ヘッダーの値
-
setHeader
ヘッダーの値を設定する。- Parameters:
name
- 値を設定するヘッダーの名前value
- ヘッダーの値- Returns:
- このオブジェクト自体
-
setHeaderMap
ヘッダーの一覧を設定する。 (既存のヘッダーは全て削除される。)- Parameters:
headers
- ヘッダーの一覧- Returns:
- このオブジェクト自体
-
getMessageId
この電文に割り当てられた識別子(メッセージID)を返す。 メッセージIDは電文送信時にMOMによって自動的に割り振られるため、 書式や一意性の範囲は製品依存となる。 また、送信前の電文にはnullが設定されている。- Returns:
- この電文のID文字列 (送信前はnull)
-
setMessageId
メッセージIDを設定する。 メッセージIDはMOM側で採番される値であり、 このメソッドは単体テスト用に便宜的に容易されているものである。- Parameters:
messageId
- メッセージIDとして指定する文字列- Returns:
- このオブジェクト自体
-
getDestination
この電文の宛先キューの論理名を取得する。 MessagingContext.send(SendingMessage) メソッドでは、この戻り値に対応する 宛先に送信される。- Returns:
- 宛先キューの論理名
-
setDestination
送信宛先キューの論理名を設定する。- Parameters:
destination
- 応答宛先キューの論理名- Returns:
- このオブジェクト自体
-
getCorrelationId
この電文に関連付けられているメッセージのメッセージIDを返す。- Returns:
- この電文のID文字列
-
setCorrelationId
この電文に既存のメッセージのIDを関連付ける。- Parameters:
messageId
- 関連付けるメッセージのID- Returns:
- この電文のID文字列
-
getReplyTo
応答宛先キューの論理名を返す。- Returns:
- この電文のID文字列
-
setReplyTo
この電文に対する応答宛先となるキューの論理名を設定する。- Parameters:
replyTo
- 応答宛先キューの論理名- Returns:
- このオブジェクト自体
-