EasyNetQ を使用して、RabbitMQ から raw バイト メッセージを同期的に消費する方法はありますか?
EasyNetQ 形式で公開されていないシステムからのメッセージの順序どおりの処理と確認応答を保証する必要があります。コンシューマーが単一のスレッドで実行されることはわかっていますが、IAdvancedBus
インターフェースは生のメッセージを消費するためのメソッドを 1 つしか提供していません。
IDisposable Consume(IQueue queue, Func<byte[], MessageProperties, MessageReceivedInfo, Task> onMessage);
戻り値のTask
型は、コンシューマーがコールバックを非同期で実行しているため、メッセージを順不同で処理する可能性があることを意味します。
そうでない場合、これをサポートするためにコードを変更するためのアイデアはありますか? インターフェイスメソッドを作成します:
IDisposable Consume(IQueue queue, Action<byte[], MessageProperties, MessageReceivedInfo> onMessage);
で実装しRabbitAdvancedBus
ますが、コードが正確にどこに行くのかわかりません。