2016-05-26 7 views
0

に聞いて消費者をJMSあなたは例えば、時間当たりの消費されるメッセージの割合の上限を定義することができます。私は非理想と見スロットル消費率はキャメルスロットラーコンポーネントを使用してActiveMQのキュー

from("activemq:queueA").throttle(10).to("direct-vm:bla") 

何Camel ThrottlerがThrottlerによってブロックされている間に交換機をメモリ内に保持するということです。そのため、キュー消費者が100人いて、「direct-vm:bla」が遅い(外部の低速サービスを呼び出すなど)理由がある場合は、最大100回の交換が可能です。

ActiveMQレベルにスロットル要件を課すActiveMQ機能があるのだろうかと思いました。たぶんキュー単位のレベルでさえ。 HornetQの消費者の最大レートに類似したもの。

答えて

1

トランザクションを使用するようにコンシューマを構成します(XAトランザクションである必要はありません。他の1つのエンドポイントだけがローカルJMSトランザクションを使用する場合は、「LLRトランザクションアプローチ」を参照してください)。 Camelルートに障害が発生すると、メッセージはブローカにロールバックされます。

+0

答えはMattですが、これがどのように調整を行うのに役立つのでしょうか? – Vassilis

+0

スロットルを追加する理由を詳しく説明しなければなりません。通常、私はすでに低速の消費者にスロットルを追加したくありません。スロットルを追加するだけの場合は、トランザクションルートに追加してください。ルートまたは最後のエンドポイントが失敗した場合でも、メッセージは抑制されていてもブローカにロールバックされます。 –

+0

理由は、ラクダのルートが呼び出しているWebサービスを公開している第三者との合意のためです。 ルートが何らかの理由で失敗した場合、メッセージはActiveMQキューにロールバックされ、再び消費されるという意味で、このトリックを行います。私はこれに同意する。 しかし、私はキャメルルートレベルではなくActiveMQレベルにスロットリングを課す方法を見つけることを望んでいました。 – Vassilis

関連する問題