227.12. 到着時間のテスト

Camel 2.7 以降で利用可能

Mock エンドポイントは、メッセージの到着時間を Exchange のプロパティーとして保存します。

Date time = exchange.getProperty(Exchange.RECEIVED_TIMESTAMP, Date.class);

この情報を使用して、メッセージがいつモックに到着したかを知ることができます。しかし、モックに到着した前のメッセージと次のメッセージの間の時間間隔を知るための基礎も提供します。これを使用して、Mock エンドポイントで arrives DSL を使用して期待値を設定できます。

たとえば、次のメッセージの 0-2 秒前に最初のメッセージが到着するようにするには、次のようにします。

mock.message(0).arrives().noLaterThan(2).seconds().beforeNext();

これを、2 番目のメッセージ (0 インデックスベース) が前のメッセージから 0-2 秒以内に到着するように定義することもできます。

mock.message(1).arrives().noLaterThan(2).seconds().afterPrevious();

between を使用して下限を設定することもできます。たとえば、1-4 秒の間である必要があるとします。

mock.message(1).arrives().between(1, 4).seconds().afterPrevious();

すべてのメッセージに期待値を設定することもできます。たとえば、メッセージ間のギャップは最大 1 秒にする必要があります。

mock.allMessages().arrives().noLaterThan(1).seconds().beforeNext();
ヒント

時間単位
上記の例では時間単位として seconds を使用していますが、Camel は millisecondsminutes も提供しています。