44.2. Message インターフェースの実装

カスタムメッセージの実装方法

例44.2「カスタムメッセージの実装」 は、DefaultMessage クラスを拡張してメッセージを実装する方法を概説します。

例44.2 カスタムメッセージの実装

import org.apache.camel.Exchange;
import org.apache.camel.impl.DefaultMessage;

public class CustomMessage extends DefaultMessage { 1

    public CustomMessage() { 2
        // Create message with default properties...
    }

    @Override
    public String toString() { 3
        // Return a stringified message...
    }

    @Override
    public CustomMessage newInstance() { 4
        return new CustomMessage( ... );
    }

    @Override
    protected Object createBody() { 5
        // Return message body (lazy creation).
    }

    @Override
    protected void populateInitialHeaders(Map<String, Object> map) { 6
        // Initialize headers from underlying message (lazy creation).
    }

    @Override
    protected void populateInitialAttachments(Map<String, DataHandler> map) { 7
        // Initialize attachments from underlying message (lazy creation).
    }
}
1
org.apache.camel.impl.DefaultMessage クラスを拡張して、カスタムメッセージクラス CustomMessage を実装します。
2
通常、デフォルトのプロパティーでメッセージを作成するデフォルトコンストラクターが必要です。
3
toString() メソッドを上書きして、メッセージ文字列をカスタマイズします。
4
newInstance() メソッドは、MessageSupport.copy() メソッド内から呼び出されます。newInstance() メソッドのカスタマイズは、現在のメッセージインスタンスの カスタム プロパティーをすべて新しいメッセージインスタンスにコピーすることにフォーカスする必要があります。MessageSupport.copy() メソッドは、copy From()を呼び出すことで汎用メッセージプロパティーをコピー します。
5
createBody() メソッドは MessageSupport.getBody() メソッドと連携して機能し、メッセージボディーへの遅延アクセスを実装します。デフォルトでは、メッセージのボディーは null です。これは、アプリケーションコードが( getBody()を呼び出して)ボディーにアクセスしようとする場合にのみ、本文が作成されます。MessageSupport.getBody() は、メッセージボディーが最初にアクセスされたときに、create Body()を 自動的に呼び出します。
6
populate InitialHeaders() メソッドはヘッダー getter および setter メソッドと連携して機能し、メッセージヘッダーへの遅延アクセスを実装します。このメソッドは、メッセージヘッダーを抽出し、ハッシュマップに挿入するメッセージを解析し、をマップします。ユーザーが(getHeader ()、getHeaders()、set Header()、または setHeaders()を呼び出すこと で)初めてヘッダー(またはヘッダー) にアクセスしようとすると、populateInitial Headers( )メソッドが 自動的に呼び出されます。
7
populate InitialAttachments() メソッドは添付の getter および setter メソッドと連携して機能し、アタッチメントへの遅延アクセスを実装します。このメソッドは、メッセージのアタッチメントを抽出し、ハッシュマップ map に挿入します。populateInitialAttachments() メソッドは、getAttachment()getAttachments()getAttachmentNames()、または addAttachment() を呼び出して、ユーザーが初めて添付ファイルにアクセスしようとすると、自動的に呼び出されます。