私は交換を集約したいと思います。そして、ある特定のサイズ(例えば20KB)のヒットを交換すると、その交換をクローズとしてマークしたいと思います。集約のメッセージサイズに基づく集計方法
私はエクスチェンジのサイズをチェックする初歩的な実装をしていますが、それが18KBの場合は私の述語から真を返します。しかし、メッセージが4KBで現時点で17KBであれば、それは大きすぎる21KBのときに集約することを意味します。
これを解決する方法はありますか?集計戦略で何かをして結合を拒否し、集約するために新しいExchangeを開始することはできますか?
実際のサイズを確認するために別のプロセスを実行してメッセージの末尾のメッセージを削除してサイズに合わせることができたと考えていましたが、削除されたメッセージごとに戻します...しかし、私は常に実行する可能性が高いルーチンを補償している。
ご協力いただきありがとうございます。
ありがとうございます。私はそれを見てみましょう。私はCamelを使ってからしばらくしていることを認めなければなりません。実際のEIPの問題を解決するためにCamelを使用して戻ってきてうれしいです。私は2.11日から何が新しくなったのかを確認する必要があります。 – user2871054
これで、Precompletionインターフェイスが実装されました。 'public boolean preComplete(Exchange oldExchange、Exchange newExchange){ \t \t \t String oldBody = oldExchange.getIn()。getBody(String.class); \t \t \t文字列newBody = newExchange.getIn()。getBody(String.class); \t \t \t \t \t \t return(oldBody + newBody).length()>(10 * 2000)?正誤 ; \t \t} 'それだけで動作します。新しい交換機が古い交換機を20kにする場合、それは集約された交換機を完了し、新しいものを作成する。 eagercompleteを使う必要があるかどうかわからないこの例では、強制的に集約を完了させるためにSTOPを送信する場合に使用することを示唆しています。 – user2871054