第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の戻り値を返します。