44.2. Message インターフェイスの実装
カスタムメッセージの実装方法 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
例44.2「カスタムメッセージの実装」 は、DefaultMessage
クラスを拡張してメッセージを実装する方法を概説します。
例44.2 カスタムメッセージの実装
- 1
org.apache.camel.impl.DefaultMessage
クラスを拡張し、カスタムメッセージクラス CustomMessage を実装します。- 2
- 通常、デフォルトのプロパティーでメッセージを作成するデフォルトコンストラクターが必要です。
- 3
toString()
メソッドを上書きして、メッセージ文字列をカスタマイズします。- 4
newInstance()
メソッドは、MessageSupport.copy()
メソッド内から呼び出されます。newInstance()
メソッドのカスタマイズは、現在のメッセージインスタンスのすべての カスタム プロパティーを新しいメッセージインスタンスにコピーすることにフォーカスする必要があります。このMessageSupport.copy()
メソッドは、copyFrom()
を呼び出すことにより汎用メッセージプロパティーをコピーします。- 5
- この
createBody()
メソッドは、MessageSupport.getBody()
メソッドと連携して機能し、メッセージボディーへの遅延アクセスを実装します。デフォルトでは、メッセージのボディーはnull
です。これは、アプリケーションコードが (getBody()
を呼び出して) ボディーにアクセスしようとする場合にのみ、ボディーが作成されます。メッセージのボディーに初めてアクセスすると、MessageSupport.getBody()
は自動的にcreateBody()
を呼び出します。 - 6
- この
populateInitialHeaders()
メソッドは、ヘッダー getter および setter メソッドと連携して機能し、メッセージヘッダーへの遅延アクセスを実装します。このメソッドはメッセージを解析して、メッセージヘッダーを抽出し、ハッシュマップmap
に挿入します。populateInitialHeaders()
メソッドは、ユーザーが (getHeader()
、getHeaders()
、setHeader()
、またはsetHeaders()
を呼び出すことにより) ヘッダーに初めてアクセスしようとすると自動的に呼び出されます。 - 7
- この
populateInitialAttachments()
メソッドは、アタッチメントの getter および setter メソッドと連携して機能し、アタッチメントへの遅延アクセスを実装します。このメソッドは、メッセージのアタッチメントを抽出し、ハッシュマップmap
に挿入します。populateInitialAttachments()
メソッドは、getAttachment()
、getAttachments()
、getAttachmentNames()
、またはaddAttachment()
を呼び出して、ユーザーが初めて添付ファイルにアクセスしようとすると、自動的に呼び出されます。