第44章 Message インターフェイス
概要
この章では、Apache Camel コンポーネントの実装で任意のステップである Message インターフェイスを実装する方法を説明します。
44.1. Message インターフェイス
概要
org.apache.camel.Message
タイプのインスタンスは、あらゆる種類のメッセージ (In または Out) を表すことができます。メッセージタイプの継承階層を 図44.1「メッセージの継承階層」 に示します。コンポーネントにカスタムメッセージタイプを常に実装する必要はありません。多くの場合、デフォルトの実装 DefaultMessage
で十分です。
図44.1 メッセージの継承階層
Message インターフェイス
例44.1「Message インターフェイス」は、org.apache.camel.Message
インターフェイスの定義を示しています。
例44.1 Message インターフェイス
package org.apache.camel; import java.util.Map; import java.util.Set; import javax.activation.DataHandler; public interface Message { String getMessageId(); void setMessageId(String messageId); Exchange getExchange(); boolean isFault(); void setFault(boolean fault); Object getHeader(String name); Object getHeader(String name, Object defaultValue); <T> T getHeader(String name, Class<T> type); <T> T getHeader(String name, Object defaultValue, Class<T> type); Map<String, Object> getHeaders(); void setHeader(String name, Object value); void setHeaders(Map<String, Object> headers); Object removeHeader(String name); boolean removeHeaders(String pattern); boolean hasHeaders(); Object getBody(); Object getMandatoryBody() throws InvalidPayloadException; <T> T getBody(Class<T> type); <T> T getMandatoryBody(Class<T> type) throws InvalidPayloadException; void setBody(Object body); <T> void setBody(Object body, Class<T> type); DataHandler getAttachment(String id); Map<String, DataHandler> getAttachments(); Set<String> getAttachmentNames(); void removeAttachment(String id); void addAttachment(String id, DataHandler content); void setAttachments(Map<String, DataHandler> attachments); boolean hasAttachments(); Message copy(); void copyFrom(Message message); String createExchangeId(); }
メッセージメソッド
Message インターフェイスは以下のメソッドを定義します。
-
setMessageId()
、getMessageId()
: メッセージ ID の getter メソッドおよび setter メソッド。カスタムコンポーネントでメッセージ ID を使用する必要があるかどうかが実装の詳細となります。 -
getExchange()
: 親エクスチェンジオブジェクトへの参照を返します。 -
isFault()
、setFault()
: fault フラグの getter および setter メソッド。このメッセージが障害メッセージであるかどうかを示します。 -
getHeader()
、getHeaders()
、setHeader()
、setHeaders()
、removeHeader()
、hasHeaders()
: メッセージヘッダーのゲッターメソッドとセッターメソッド。通常、これらのメッセージヘッダーを使用して実際のヘッダーデータを保存するか、その他のメタデータを保存することもできます。 -
getBody()
、getMandatoryBody()
、setBody()
: メッセージボディーのゲッターメソッドとセッターメソッド。getMandatoryBody() アクセッサーは返されるボディーが null 以外であることを保証します。それ以外の場合はInvalidPayloadException
例外が発生します。 -
getAttachment()
、getAttachments()
、getAttachmentNames()
、removeAttachment()
、addAttachment()
、setAttachments()
、hasAttachments()
: 添付ファイルを取得、設定、追加、および削除するメソッド。 -
copy()
: 現在のカスタムメッセージオブジェクトと同一の (メッセージ ID を含む) 新しいコピーを作成します。 -
copyFrom()
: 指定した汎用メッセージオブジェクトmessage
の完全なコンテンツ (メッセージ ID を含む) を現在のメッセージインスタンスにコピーします。このメソッドは どのような メッセージタイプからでもコピーできる必要があるため、汎用メッセージプロパティーがコピーされますが、カスタムプロパティーはコピーされません。 -
createExchangeId()
: メッセージ実装が ID を提供できる場合は、このエクスチェンジの一意の ID を返します。それ以外の場合は、null
の戻り値を返します。