35.3. メッセージコンテンツへのアクセス
メッセージヘッダーへのアクセス
メッセージヘッダーは、ルーターサービスで処理されることを意図していることが多いため、ルーターの観点から見て最も有用なメッセージコンテンツを含んでいることが一般的です。ヘッダーデータにアクセスするには、まずエクスチェンジオブジェクトからメッセージを取得してから (例: Exchange.getIn()
を使用)、Message インターフェイスを使用して個別のヘッダーを取得する必要があります (例: Message.getHeader()
を使用)。
例35.4「認証ヘッダーへのアクセス」 は、Authorization
という名前のヘッダーの値にアクセスするカスタムプロセッサーの例を示しています。この例では、ExchangeHelper.getMandatoryHeader()
メソッドを使用しているため、NULL ヘッダー値をテストする必要がなくなります。
例35.4 認証ヘッダーへのアクセス
import org.apache.camel.*;
import org.apache.camel.util.ExchangeHelper;
public class MyProcessor implements Processor {
public void process(Exchange exchange) {
String auth = ExchangeHelper.getMandatoryHeader(
exchange,
"Authorization",
String.class
);
// process the authorization string...
// ...
}
}
Message インターフェースの詳細は、「Messages」 を参照してください。
メッセージボディーへのアクセス
メッセージボディーにもアクセスできます。たとえば、In メッセージの末尾に文字列を追加するには、例35.5「メッセージボディーへのアクセス」 に示されているようにプロセッサーを使用することができます。
例35.5 メッセージボディーへのアクセス
import org.apache.camel.*; import org.apache.camel.util.ExchangeHelper; public class MyProcessor implements Processor { public void process(Exchange exchange) { Message in = exchange.getIn(); in.setBody(in.getBody(String.class) + " World!"); } }
メッセージのアタッチメントへのアクセス
Message.getAttachment()
メソッドまたは Message.getAttachments()
メソッドのいずれかを使用して、メッセージの添付にアクセスできます。詳細は、例34.2「Message インターフェイス」 を参照してください。