質問

私は特定のシナリオを念頭に置いたActiveMQ /キャメル初心者です。まず可能かどうか、そして誰かが少し方向性を提供できるかどうかを考えます。

基本的に、キューから動的な調整を実行する必要があります。つまり、特定のメッセージグループがキューから消費されるレートを実行時に設定する機能です。

たとえば、1秒間に10個消費されるメッセージのグループ、1秒間に1個消費される別のグループなどを追加します。

ラクダにルートを設定し、キューなどにメッセージをグループ化する基本を知っていますが、ドキュメントからこれを理解することはできません。

役に立ちましたか?

解決

ええ、消費者がブロックしないようにブローカー側の調整を探しているようです。

ActiveMQ user / devフォーラムでリクエストを提出しましたか?

他のヒント

Camelの既存のスロットルを使用してから、タイプごとに異なるキューを使用できます。異なるスロットルレートを設定する必要があるメッセージの数

e.g。

from("activemq:Queue1.Input").
    throttle(20).
    to("activemq:Queue1.Output");  
from("activemq:Queue2.Input").
    throttle(5).
    to("activemq:Queue2.Output");  

Apache Camel JIRAにRFEを追加しませんか?

メッセージの特定のグループのレートを決定するためのロジックは何ですか?

メッセージの異なるグループが同じスロットルを通過する場合、複雑になる可能性があります。どのグループに属しているか、したがってどのレートがスロットルを通過する必要があるかを判断するために、弁別器が必要です。

ユースケースを記入してRFEを記録するのに時間がかかる場合、Camelコミュニティ、開発者が支援できると確信しています。

自分で実装してみることができます。基本的に何でもプロセッサなので、from(<!> quot; activemq:queue:foo <!> quot;)。process(myOwnThrottler).to(<!> quot; bean:handleMessage <!> quot; );

Camelのいくつかのクラスを拡張できます。 -DelegateProcessor -DelayProcessorSupport -スロットル


クラウス・イプセン Apache Camel Committer

オープンソース統合: http://fusesource.com ブログ: http://davsclaus.blogspot.com/

OK、シナリオをもう少し詳しく説明し、わかりやすい範囲でメインブロッカーを強調します。

メッセージの2つのグループ(実際にははるかに大きいスケール)があり、それぞれ異なる調整要件があります-たとえば、メッセージヘッダーでこれをflowRateおよびflowTimeとして指定します。

  • グループ1:FlowRate = 1; flowTime = 60(1分あたり1)
  • グループ2:FlowRate = 1; flowTime = 1 (1秒あたり1)

Claus に従ってプロセッサを実装します。これはヘッダーフィールドを調べ、遅延入力として使用します。

グループ1から20000メッセージ、グループ2から20000メッセージを追加します

スロットルはコンシューマー側であるため、グループ1によってアクティブ化された遅延器は、入力バッファーをすぐにいっぱいにして遅延を引き起こし、グループ2のメッセージはスタックします... ジェームス

JMXGroupIDヘッダーを使用してメッセージをグループ化し、複数のコンシューマーを実装できることを認識していますが、それが n グループに対応するための要件に対応するとは思いません。

基本的に、私が思っていたのは、消費者側の調整や、消費者が最終的にブロックすることなく調整できる他のソリューションではなく、ブローカーを行う方法があるかどうかです

希望を明確に説明し、これまでの提案に感謝します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top