第43章 Exchange インターフェイス
概要
本章では、Exchange インターフェイスについて説明します。Apache Camel 2.0 で実行される camel-core モジュールのリファクタリングにより、カスタムエクスチェンジタイプを定義する必要がなくなりました。DefaultExchange
実装をすべてのケースで使用できるようになりました。
43.1. Exchange インターフェイス
概要
org.apache.camel.Exchange 型のインスタンスは、エクスチェンジプロパティーとしてエンコードされた追加のメタデータと共に、ルートを通過する現在のメッセージをカプセル化します。
図43.1「エクスチェンジ継承階層」 エクスチェンジタイプの継承階層を表示します。デフォルトの実装は常に DefaultExchange
が使用されます。
図43.1 エクスチェンジ継承階層
Exchange インターフェイス
例43.1「Exchange インターフェイス」 は、org.apache.camel.Exchange インターフェースの定義を示しています。
例43.1 Exchange インターフェイス
package org.apache.camel; import java.util.Map; import org.apache.camel.spi.Synchronization; import org.apache.camel.spi.UnitOfWork; public interface Exchange { // Exchange property names (string constants) // (Not shown here) ... ExchangePattern getPattern(); void setPattern(ExchangePattern pattern); Object getProperty(String name); Object getProperty(String name, Object defaultValue); <T> T getProperty(String name, Class<T> type); <T> T getProperty(String name, Object defaultValue, Class<T> type); void setProperty(String name, Object value); Object removeProperty(String name); Map<String, Object> getProperties(); boolean hasProperties(); Message getIn(); <T> T getIn(Class<T> type); void setIn(Message in); Message getOut(); <T> T getOut(Class<T> type); void setOut(Message out); boolean hasOut(); Throwable getException(); <T> T getException(Class<T> type); void setException(Throwable e); boolean isFailed(); boolean isTransacted(); boolean isRollbackOnly(); CamelContext getContext(); Exchange copy(); Endpoint getFromEndpoint(); void setFromEndpoint(Endpoint fromEndpoint); String getFromRouteId(); void setFromRouteId(String fromRouteId); UnitOfWork getUnitOfWork(); void setUnitOfWork(UnitOfWork unitOfWork); String getExchangeId(); void setExchangeId(String id); void addOnCompletion(Synchronization onCompletion); void handoverCompletions(Exchange target); }
エクスチェンジのメソッド
Exchange インターフェイスは以下のメソッドを定義します。
getPattern()
、setPattern()
− エクスチェンジパターンは、org.apache.camel.ExchangePattern
に列挙される値のいずれかになります。以下の交換パターンの値がサポートされます。-
InOnly
-
RobustInOnly
-
InOut
-
InOptionalOut
-
OutOnly
-
RobustOutOnly
-
OutIn
-
OutOptionalIn
-
-
setProperty()
、getProperty()
、getProperties()
、removeProperty()
、hasProperties()
− プロパティー setter および getter メソッドを使用して、名前付きプロパティーをエクスチェンジのインスタンスに関連付けます。プロパティーは、コンポーネントの実装に必要なその他のメタデータで設定されます。 In メッセージの setter および getter メソッド
setIn()
、getIn()
。DefaultExchange
クラスが提供するgetIn()
実装は Lazy Creation セマンティクスを実装します。In メッセージが null の場合にgetIn()
が呼ばれると、DefaultExchange
クラスはデフォルトの In メッセージを作成します。setOut()
、getOut()
、hasOut()
: Out メッセージの setter メソッドおよび getter メソッド。この
getOut()
メソッドは、Out メッセージの Lazy Creation を暗黙的にサポートします。つまり、現在の Out メッセージがnull
の場合は、新しいメッセージインスタンスが自動的に作成されます。-
setException()
,getException()
− (Throwable
型の) 例外オブジェクトの getter および setter メソッド。 -
isFailed()
: エクスチェンジが例外または障害におり失敗した場合にtrue
を返します。 -
isTransacted()
− エクスチェンジが処理された場合に、true
を返します。 -
isRollback()
: エクスチェンジがロールバック用にマークされている場合にtrue
を返します。 -
getContext()
− 関連付けられたCamelContext
インスタンスへの参照を返します。 -
copy()
: 現在のカスタムエクスチェンジオブジェクトのコピーを (エクスチェンジ ID は異なります) 新たに作成します。In メッセージのボディーおよびヘッダー、Out メッセージ (存在する場合)、および Fault メッセージ (存在する場合) もこの操作によってコピーされます。 -
setFromEndpoint()
、getFromEndpoint()
: このメッセージを初期化したコンシューマーエンドポイントの getter メソッドおよび setter メソッド (通常は、ルートの開始時にfrom()
DSL コマンドに表示されるエンドポイント)。 -
setFromRouteId()
、getFromRouteId()
: このエクスチェンジを初期化したルート ID の getter および setter メソッド。getFromRouteId()
メソッドは内部でのみ呼び出す必要があります。 -
setUnitOfWork()
、getUnitOfWork()
−org.apache.camel.spi.UnitOfWork
Bean プロパティーの getter および setter メソッド。このプロパティーは、トランザクションに参加できるエクスチェンジにのみ必要です。 -
setExchangeId()
、getExchangeId()
: エクスチェンジ ID の getter メソッドおよび setter メソッド。カスタムコンポーネントがエクスチェンジ ID を使用するかどうかは実装の詳細です。 -
addOnCompletion()
− エクスチェンジの処理が完了したときに呼び出されるorg.apache.camel.spi.Synchronization
コールバックオブジェクトを追加します。 -
handoverCompletions()
: すべての OnCompletion コールバックオブジェクトを、指定されたエクスチェンジオブジェクトに渡します。