2.6. メッセージコンテンツの変換


概要

Apache Camel は、メッセージコンテンツを変換するためのさまざまなアプローチをサポートしています。Apache Camel は、メッセージコンテンツを変更するためのシンプルなネイティブ API に加えて、いくつかの異なるサードパーティーライブラリーや変換のための標準とのインテグレーションをサポートしています。

2.6.1. シンプルなメッセージ変換

概要

Java DSL にはビルトインの API があり、送受信メッセージのシンプルな変換を実行できます。たとえば、例2.1「受信メッセージのシンプルな変換」 に示すルールは、受信メッセージのボディー部の末尾にテキスト World! を追加します。

例2.1 受信メッセージのシンプルな変換

from("SourceURL").setBody(body().append(" World!")).to("TargetURL");

ここで、setBody() コマンドは受信メッセージボディーのコンテンツを置き換えます。

シンプルな変換の API

以下の API クラスを使用して、ルーターのルールによってメッセージコンテンツのシンプルな変換を実行できます。

  • org.apache.camel.model.ProcessorDefinition
  • org.apache.camel.builder.Builder
  • org.apache.camel.builder.ValueBuilder

ProcessorDefinition クラス

org.apache.camel.model.ProcessorDefinition クラスは、ルーターのルールに直接挿入できる DSL コマンドを定義しています (例: 例2.1「受信メッセージのシンプルな変換」setBody() コマンド)。表2.5「ProcessorDefinition クラスの変換メソッド」 は、メッセージコンテンツの変換に関係のある ProcessorDefinition のメソッドを示しています。

表2.5 ProcessorDefinition クラスの変換メソッド
メソッド説明

Type convertBodyTo(Class type)

IN メッセージのボディーを指定の型に変換します。

Type removeFaultHeader(String name)

FAULT メッセージのヘッダーを削除するプロセッサーを追加します。

Type removeHeader(String name)

IN メッセージ上のヘッダーを削除するプロセッサーを追加します。

Type removeProperty(String name)

エクスチェンジプロパティーを削除するプロセッサーを追加します。

ExpressionClause<ProcessorDefinition<Type>> setBody()

IN メッセージのボディーをセットするプロセッサーを追加します。

Type setFaultBody(Expression expression)

FAULT メッセージのボディーをセットするプロセッサーを追加します。

Type setFaultHeader(String name, Expression expression)

FAULT メッセージにヘッダーをセットするプロセッサーを追加します。

ExpressionClause<ProcessorDefinition<Type>> setHeader(String name)

IN メッセージにヘッダーをセットするプロセッサーを追加します。

Type setHeader(String name, Expression expression)

IN メッセージにヘッダーをセットするプロセッサーを追加します。

ExpressionClause<ProcessorDefinition<Type>> setOutHeader(String name)

OUT メッセージにヘッダーをセットするプロセッサーを追加します。

Type setOutHeader(String name, Expression expression)

OUT メッセージにヘッダーをセットするプロセッサーを追加します。

ExpressionClause<ProcessorDefinition<Type>> setProperty(String name)

エクスチェンジプロパティーをセットするプロセッサーを追加します。

Type setProperty(String name, Expression expression)

エクスチェンジプロパティーをセットするプロセッサーを追加します。

ExpressionClause<ProcessorDefinition<Type>> transform()

OUT メッセージのボディーをセットするプロセッサーを追加します。

Type transform(Expression expression)

OUT メッセージのボディーをセットするプロセッサーを追加します。

Builder クラス

org.apache.camel.builder.Builder クラスは、式または述語が想定される文脈でのメッセージコンテンツへのアクセスを提供します。つまり、Builder のメソッドは通常 DSL コマンドの 引数 の中で呼び出されます (例: 例2.1「受信メッセージのシンプルな変換」body() コマンド)。表2.6「Builder クラスのメソッド」 では、Builder クラスで利用可能な static メソッドをまとめています。

表2.6 Builder クラスのメソッド
メソッド説明

static <E extends Exchange> ValueBuilder<E> body()

エクスチェンジのインバウンドボディーに対する述語および値ビルダーを返します。

static <E extends Exchange,T> ValueBuilder<E> bodyAs(Class<T> type)

インバウンドメッセージのボディーを特定の型として、それに対する述語および値ビルダーを返します。

static <E extends Exchange> ValueBuilder<E> constant(Object value)

定数式を返します。

static <E extends Exchange> ValueBuilder<E> faultBody()

エクスチェンジのフォールトボディーに対する述語および値ビルダーを返します。

static <E extends Exchange,T> ValueBuilder<E> faultBodyAs(Class<T> type)

フォールトメッセージのボディーを特定の型として、それに対する述語および値ビルダーを返します。

static <E extends Exchange> ValueBuilder<E> header(String name)

エクスチェンジのヘッダーに対する述語および値ビルダーを返します。

static <E extends Exchange> ValueBuilder<E> outBody()

エクスチェンジのアウトバウンドボディーに対する述語および値ビルダーを返します。

static <E extends Exchange> ValueBuilder<E> outBodyAs(Class<T> type)

アウトバウンドメッセージのボディーを特定の型として、それに対する述語および値ビルダーを返します。

static ValueBuilder property(String name)

エクスチェンジのプロパティーに対する述語および値ビルダーを返します。

static ValueBuilder regexReplaceAll(Expression content, String regex, Expression replacement)

正規表現のすべての出現箇所を、指定した置換文字列で置き換える式を返します。

static ValueBuilder regexReplaceAll(Expression content, String regex, String replacement)

正規表現のすべての出現箇所を、指定した置換文字列で置き換える式を返します。

static ValueBuilder sendTo(String uri)

指定したエンドポイント URI にエクスチェンジを送信する式を返します。

static <E extends Exchange> ValueBuilder<E> systemProperty(String name)

指定のシステムプロパティーの式を返します。

static <E extends Exchange> ValueBuilder<E> systemProperty(String name, String defaultValue)

指定のシステムプロパティーの式を返します。

ValueBuilder クラス

org.apache.camel.builder.ValueBuilder クラスを使用すると、Builder メソッドによって返される値を変更できます。つまり、 ValueBuilder のメソッドは、メッセージコンテンツを変更するシンプルな方法を提供します。表2.7「ValueBuilder クラスの変更メソッド」 では、ValueBuilder クラスで利用可能なメソッドをまとめています。この表では、呼び出された値を変更するために使用されるメソッドのみが示されています (詳細は API Reference ドキュメントを参照してください) 。

表2.7 ValueBuilder クラスの変更メソッド
メソッド説明

ValueBuilder<E> append(Object value)

指定された値をこの式の文字列評価に追加します。

Predicate contains(Object value)

左辺の式に右辺の式の値が含まれた述語を作成します。

ValueBuilder<E> convertTo(Class type)

登録された型コンバーターを使用して、現在の値を指定の型に変換します。

ValueBuilder<E> convertToString()

登録された型コンバーターを使用して、現在の値を String に変換します。

Predicate endsWith(Object value)

 

<T> T evaluate(Exchange exchange, Class<T> type)

 

Predicate in(Object…​ values)

 

Predicate in(Predicate…​ predicates)

 

Predicate isEqualTo(Object value)

現在の値が指定の value 引数と等しい場合、true を返します。

Predicate isGreaterThan(Object value)

現在の値が指定の value 引数よりも大きい場合、true を返します。

Predicate isGreaterThanOrEqualTo(Object value)

現在の値が指定の value 引数より大きい場合、true を返します。

Predicate isInstanceOf(Class type)

現在の値が指定の型のインスタンスである場合、true を返します。

Predicate isLessThan(Object value)

現在の値が指定の value 引数未満の場合、true を返します。

Predicate isLessThanOrEqualTo(Object value)

現在の値が指定の value 引数以下である場合、true を返します。

Predicate isNotEqualTo(Object value)

現在の値が指定の value 引数と等しくない場合、true を返します。

Predicate isNotNull()

現在の値が null でない場合、true を返します。

Predicate isNull()

現在の値が null の場合、true を返します。

Predicate matches(Expression expression)

 

Predicate not(Predicate predicate)

述語の引数を否定にします。

ValueBuilder prepend(Object value)

この式の文字列評価を指定された値に追加します。

Predicate regex(String regex)

 

ValueBuilder<E> regexReplaceAll(String regex, Expression<E> replacement)

正規表現のすべての出現箇所を、指定した置換文字列で置き換えます。

ValueBuilder<E> regexReplaceAll(String regex, String replacement)

正規表現のすべての出現箇所を、指定した置換文字列で置き換えます。

ValueBuilder<E> regexTokenize(String regex)

指定の正規表現を使用してこの式の文字列変換をトークン化します。

ValueBuilder sort(Comparator comparator)

指定されたコンパレーターを使用して現在の値をソートします。

Predicate startsWith(Object value)

現在の値が value 引数の文字列値と一致する場合、true を返します。

ValueBuilder<E> tokenize()

コンマのトークン区切り文字を使用してこの式の文字列変換をトークン化します。

ValueBuilder<E> tokenize(String token)

指定のトークン区切り文字を使用してこの式の文字列変換をトークン化します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.