第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(),)、get Out ()、および getter メソッド)。hasOut()\":\"-ipmilanSetter and getter メソッド(Out メッセージに対して setOut(getOut()メソッドは、Out メッセージの Lazy Creation を暗黙的にサポートします。つまり、現在の Out メッセージがnullの場合、新しいメッセージインスタンスが自動的に作成されます。-
setException(),getException()− (Throwable型の) 例外オブジェクトの getter および setter メソッド。 -
isFailed()aadClient-ListenerExternalReturnstrue。エクスチェンジが例外または障害によって失敗した場合。 -
isTransacted()− エクスチェンジが処理された場合に、trueを返します。 -
エクスチェンジがロールバック対象としてマーク
されている場合は、isRollback()\":\"Returnstrueになります。 -
getContext()− 関連付けられたCamelContextインスタンスへの参照を返します。 -
copy()\":\"-ipmilanCreates は、現在のカスタムエクスチェンジオブジェクトのコピーと同じ(エクスチェンジ ID の)コピーを作成します。In メッセージのボディーおよびヘッダー、Out メッセージ (存在する場合)、および Fault メッセージ (存在する場合) もこの操作によってコピーされます。 -
setFromEndpoint()、getFromEndpoint(): このメッセージを初期化したコンシューマーエンドポイントの getter メソッドおよび setter メソッド (通常は、ルートの開始時にfrom()DSL コマンドに表示されるエンドポイント)。 -
setFromRouteId(),getFromRouteId()aadClient-ipmilanGetters and setters for the route ID that that basedd exchange.getFromRouteId()メソッドは、内部でのみ呼び出す必要があります。 -
setUnitOfWork()、getUnitOfWork()−org.apache.camel.spi.UnitOfWorkBean プロパティーの getter および setter メソッド。このプロパティーは、トランザクションに参加できるエクスチェンジにのみ必要です。 -
エクスチェンジ ID の
setExchangeId()、getExchangeId()、getExchangeId()、および setter メソッド。カスタムコンポーネントがエクスチェンジ ID を使用するかどうかは実装の詳細です。 -
addOnCompletion()− エクスチェンジの処理が完了したときに呼び出されるorg.apache.camel.spi.Synchronizationコールバックオブジェクトを追加します。 -
すべての OnCompletion コールバックオブジェクトを、指定したエクスチェンジオブジェクトに引き継ぎます。