ファイル システム上の IBM MQ とフォルダーを利用するメッセージ ブローカーを作成しています。メッセージを取得した後、それらを厳密に型指定されたクラスに具体化し、RX サブジェクトにプラグインします。
メッセージを処理するためにどの外部システムを攻撃する必要があるかを特定できるように、メッセージに対する認識を構築したので、RX オブザーバブルに対してクエリを実行し、外部システムを対象としないメッセージを選択することができます。
次にやりたいことは、ヒットした外部システムによるメッセージの抑制です。たとえば、次のようになります。
特定のタイプのメッセージで CRM システムをヒットしていて、最大 4 つの同時呼び出しでそのシステムをヒットしたいと判断した場合、一度に 4 つのメッセージしか処理しません。5 番目のメッセージがあった場合は、前の 4 つのうちの 1 つが完了するのを待ってから、5 つ目に進む必要があります。外部データベース、他の外部 Web サービスなどの他のタイプのリソースについても同じです。
私はこの問題について調査を開始しましたが、これまでのところ、最良の設計アプローチは独自のスケジューラを作成することです。欠点は、メッセージが取得された後、スケジューラー内でメッセージをキューに入れる独自の内部構造を作成する必要があることです。これが、私がこのアプローチを嫌います。
誰かがこれを行うためのより良い方法を持っていますか?