検索

第284章 単純な JMS バッチコンポーネント

download PDF

Camel バージョン 2.16 から利用可能

SJMS Batch は、JMS キューからパフォーマンスの高いトランザクションバッチ消費のための特殊なコンポーネントです。コンシューマーのみのコンポーネントおよびアグリゲーターのハイブリッドとして考えることができます。

Camel の一般的なユースケースは、キューからメッセージを消費し、集約された状態を別のエンドポイントに送信する前に集約することです。処理を実行しているシステムが失敗した場合にデータが失われないようにするため、通常はキューからのトランザクション内で消費され、JDBC コンポーネントで見つかったものなどの永続 AggregationRepository に保存されている集約が集約されます

Aggregator パターンの動作は、受信メッセージが集約される前に AggregationRepository からデータを取得し、後で結果を書き込む必要があります。実際、集約されたアーティファクトの数が増えると、読み取りおよび書き込みが徐々に遅くなります。この影響を示す任意の時間単位を使用した例は次のとおりです。

項目読み取り時間書き込み時間合計時間

0

0

1

1

1

1

2

4

2

2

3

9

3

3

4

16

4

4

5

25

5

5

6

36

6

6

7

49

7

7

8

64

8

8

9

81

9

9

10

100

一方、SJMS Batch コンポーネントを使用した消費パフォーマンスはリニアです。各メッセージは、次のメッセージがフェッチされる前に AggregationStrategy を使用して消費され、集計されます。すべての消費と集約が単一の JMS トランザクションで実行されるので、中間状態を永続化するために外部ストレージは必要ありません。上記の読み取りおよび書き込みコストを回避します。実際には、これにより、スループットが増加する複数の順序が高くなります。

最初のメッセージ以降のサイズまたは期間のいずれかで完了条件が満たされると、集約された Exchange はルートに渡されます。このエクスチェンジの処理中に、例外がスローされた場合やシステムがシャットダウンすると、元の消費されたメッセージがすべてキューに戻されます(または、ブローカー設定に応じてデッドレターキューに置かれます)。

通常のアグリゲーターとは異なり、集約条件のファシリティーはありません。つまり、メッセージの複数のグループに消費をバッチ処理することはできません。消費されるすべてのメッセージは単一のバッチに集約されます。

複数の JMS コンシューマーサポートが利用できます。これにより、1 つのルートを使用して並行して消費でき、同時に JMS メッセージグループなどの機能を使用して関連メッセージをグループ化できます。

Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-sjms</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

284.1. URI 形式

sjms:[queue:]destinationName[?options]

destinationName は JMS キューです。デフォルトでは、destinationName はキュー名として解釈されます。

sjms:FOO.BAR

必要に応じて、オプションの queue: プレフィックスを含めることができます。

sjms:queue:FOO.BAR

トピック消費は、そのコンテキスト内でバッチ消費を使用する利点がないため、サポートされていません。通常、トピックメッセージは永続的ではなく、損失は許容されます。失敗したトランザクション内で消費されると、トピックメッセージはブローカーによって再配信されない可能性があります。単純な SJMS コンシューマーエンドポイントは、このシナリオの通常の非永続性アグリゲーターと併用できます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.