これが私の使用例です: 私は取引アプリケーションを開発しており、見積もり全体とスナップショットの更新を新しい消費者に (最初に) 送信するのではなく、アクティブな消費者に株式の増分更新 (bidQty など) を送信したいと考えています。
さて、この動作を実現するために ActiveMQ のクラス (トピックの実装者) をオーバーライドすることは可能ですか? これに関する手がかりは役に立ちます。
他のオープンソース プロバイダーで同じことが可能である場合は、お知らせください。
これは、トピックの実装を単純に変更できる場合ではありません。実際には、特定のビジネス要件を解決するためにコア ActiveMQ 機能の実装を変更することは避けるべきです。バグを修正し、コア メッセージング機能を追加することは別のことです。
通常の ActiveMQ 機能を使用してユース ケースを解決するには、複数の方法があります。
個別の同期チャネルと更新チャネル
おそらく、「同期/スナップショット」チャネルを「増分更新」チャネルから分割します。
1 つの方法は、"snapshot-sync" をJMS 要求/応答として実装することです。この場合、コンシューマーはプロバイダーに同期を要求し、トピックを介してプッシュされる増分更新に引き続き依存します。
アドバイザリ メッセージとセレクタ
AdvisoryMessagesとJMS Selectorsを組み合わせて使用する単一のトピックを使用して、すべてを実装することもできます。
アイデア (これはさまざまな方法で実行できます):
2 つのメッセージ プロパティを導入: MsgType と Receiver
MsgType='inc' OR (MsgType='snapshot' AND Receiver=<me>)
このようにして、特定のクライアントとのスナップショット同期、およびすべてのクライアントの増分更新をトリガーできます。
すでに持っているダイナミクスについて考え始めると、おそらく別の 10 ほどのソリューションを思いつくことができます。
遡及消費者
遡及的コンシューマーを使用している可能性があります。この例は、実際にあなたと同様のシナリオを示しています。