Red Hat Training

A Red Hat training course is available for Red Hat Fuse

第33章 DataSet

データセットコンポーネント

DataSet コンポーネント(1.3.0 以降で利用可能)は、システムの負荷およびソークテストを簡単に実行するメカニズムを提供します。これは、メッセージのソースとして、データセットを受け取ることをアサートする方法の両方で、DataSet インスタンス を作成することを可能にすることで機能します。
Apache Camel は、データセットの送信時に スループットロガー を使用します。

URI 形式

dataset:name[?options]
name は、レジストリーで DataSet インスタンス を見つけるために使用されます。
Apache Camel には、org.apache.camel.component.dataset.DataSet のサポート実装が同梱されており、独自の DataSet を実装するためのベースとして使用できる org.apache.camel.component.dataset.DataSetSupport クラスです。Apache Camel には、テストに使用できる実装( org.apache.camel.component.dataset.SimpleDataSetorg.apache.camel.component.dataset.ListDataSet、および org.apache.camel.component.dataset.FileDataSet )も同梱されます。これらはすべて DataSetSupport を拡張します。

オプション

オプション デフォルト 説明
produceDelay 3 遅延をミリ秒単位で指定できます。これにより、プロデューサーが一時停止し、低速なプロデューサーをシミュレートします。このオプションを -1 に設定し、遅延なしを強制しない限り、最低 3 ミリ秒の遅延を使用します。
consumeDelay 0 ミリ秒で遅延を指定できるようにします。これにより、コンシューマーは低速なコンシューマーをシミュレートするために一時停止します。
preloadSize 0 ルートが初期化を完了する前に事前ロードするメッセージ数を設定します(送信)。
initialDelay 1000 Camel 2.1: メッセージの送信を開始する前に待機する期間(ミリ秒単位)。
minRate 0 DataSet にこの数のメッセージが含まれるまで待ちます。
dataSetIndex lenient
Camel 2.17: CamelDataSetIndex ヘッダーの動作を制御します。サポートされる値は strictlenient および off です。Camel 2.17 より前のデフォルトの動作は、dataSetIndex=strict を設定して復元できます。
コンシューマーの場合:
strict または、 lenient
CamelDataSetIndex ヘッダーは常に設定されます。
off
CamelDataSetIndex ヘッダーは設定されません。
プロデューサーの場合:
strict
CamelDataSetIndex ヘッダーが存在し、ヘッダーの値を確認します。
lenient
CamelDataSetIndex ヘッダーが存在する場合は、ヘッダーの値が検証されます。ヘッダーが存在しない場合は設定されます。
off
CamelDataSetIndex ヘッダーがある場合、ヘッダーの値は検証されません。ヘッダーが存在しない場合は設定されません。
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

DataSet の設定

Apache Camel は、DataSet インターフェイスを実装する Bean のレジストリーでルックアップします。そのため、以下のように独自の DataSet を登録できます。
   <bean id="myDataSet" class="com.mycompany.MyDataSet">
      <property name="size" value="100"/>
   </bean>

たとえば、メッセージのセットがキューに送信され、メッセージを失うことなくキューから消費されることをテストするには、以下を実行します。
// send the dataset to a queue
from("dataset:foo").to("activemq:SomeQueue");

// now lets test that the messages are consumed correctly
from("activemq:SomeQueue").to("dataset:foo");
上記はレジストリーを検索して、メッセージの作成に使用される foo DataSet インスタンスを見つけます。
次に、以下に示すように SimpleDataSet を使用するなど、DataSet 実装を作成し、データセットのサイズやメッセージがどのように見えるかなどを設定します。

DataSetSupport のプロパティー

プロパティー
タイプ
デフォルト
説明
defaultHeaders
Map<String,Object>
null
デフォルトのメッセージボディーを指定します。SimpleDataSet の場合、これは一定のペイロードです。ただし、メッセージごとにカスタムペイロードを作成する場合は、DataSetSupport の独自の導出を作成します。
outputTransformer
org.apache.camel.Processor
null
size
long
10
送信/消費するメッセージの数を指定します。
reportCount long -1 進捗を報告する前に受信するメッセージの数を指定します。大規模な負荷テストの進捗を表示するのに便利です。< 0 の場合、size / 5、が 0 の場合は size、それ以外の場合は reportCount 値に設定されます。

SimpleDataSet

SimpleDataSetDataSetSupport を拡張し、デフォルトのボディーを追加します。

表33.1 SimpleDataSet の追加プロパティー

プロパティー
タイプ
デフォルト
説明
defaultBody
Object
<hello>world!</hello>
デフォルトのメッセージボディーを指定します。SimpleDataSet の場合、これは一定のペイロードです。ただし、メッセージごとにカスタムペイロードを作成する場合は、DataSetSupport の独自の導出を作成します。

ListDataSet

ListDataSetDataSetSupport を拡張し、デフォルトの本文の一覧を追加します。

表33.2 ListDataSet の追加プロパティー

プロパティー
タイプ
デフォルト
説明
defaultBodies
Object
<hello>world!</hello>
size
long
10

FileDataSet

SimpleDataSetListDataSet を拡張し、ファイルから本文を読み込むサポートを追加します。

表33.3 FileDataSet の追加プロパティー

プロパティー
タイプ
デフォルト
説明
sourceFile
String
null
delimiter
String
\z