詳細情報: 私が呼び出しているサーバーはサード パーティであり、送信するメッセージを制御することはできません。メッセージ ID に基づいて、それらが正しい順序で配置されていることはわかっています。また、このシステムでは ACK と Acknowledge に違いがあります。元のメッセージが「送信」キューに置かれると、ACK が受信されます。次に、応答の「受信」キューを監視します。私は通常、「承認」の後に「合格」または「不合格」を受け取ります。これらのメッセージの相関 ID は、ACK からのメッセージ ID です。
私はもともとメッセージ リスナーを使用し、OnMessge イベントに応答していました。この方法を使用すると、メッセージが非同期で配信されるため、特定の順序で配信されないことに気付き、このアプローチを断念しました。そこで、タイマー (System.Threading.Timer) を使用してポーリングし、consumer.Receive() を呼び出して一度に 1 つのメッセージを取得するようにコードを変更しました。これは私が望むように機能します。
サービスの開始時に一度コンシューマーを開き、メッセージを継続的にポーリングします。