第306章 Simple JMS Batch コンポーネント


Camel バージョン 2.16 以降で利用可能

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

Camel の一般的な使用例は、キューからのメッセージを消費し、集約された状態を別のエンドポイントに送信する前にそれらを一本化することです。処理を実行しているシステムに障害が発生した場合にデータが失われないようにするために、データは通常、トランザクション内でキューから消費され、JDBC Component にあるような永続的な AggregationRepository に集約されて格納されます。

アグリゲーターパターンの動作には、受信メッセージが集約される前に 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 がルートに渡されます。この Exchange の処理中に例外が出力されるか、システムがシャットダウンすると、元の消費されたすべてのメッセージが最終的にキューに戻されます (または、ブローカーの設定に応じて配信不能キューに配置されます)。

通常のアグリゲーターを使用する場合とは異なり、集約条件の機能はありません。つまり、メッセージを複数のグループにまとめて消費することはできません。消費されたすべてのメッセージは、1 つのバッチにまとめられます。

複数の 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>

306.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.