他の 2 つを使用したことはありませんが、 ZeroMQでの経験を共有できます。私の意見では、それはあなたのすべてに優れています。
速度とスループット
TCP と同じくらい高速で、CPU や大量のメモリを使用しません。汗をかかずに大量のメッセージを非常に迅速にプッシュできます。メモリが不足する前に、ネットワークチャネルが飽和状態になります(CPUを最大限に活用できるとは思えません)。どこかでRabbitMQとの比較がありましたが、ZMQ はそれを 2 倍上回っています。私が Web で読んだことによると、高速取引で使用されています。
RabbitMQ も非常に優れたツールです。それを見てください - それはあなたが探しているものにぴったりかもしれません
SPOF
アプリケーションを適切に設計すれば、単一障害点はなくなります。2 つのソケットを別のソケットに接続するのは非常に簡単です。そのため、そのうちの 1 つが失敗した場合、もう 1 つが作業を処理します。途中で役立つハイウォーターマークのようなものがあります。SPOF を使用せずにアプリを設計する方法については、 ZeroMQ ガイドをお読みください。
トランスポートとルーティング
トランスポートオプションについて(私がこれを正しく理解している場合)-プロトコルを定義するのはあなた次第です。ZeroMQ は基本的に、このデータの塊を相手先に配信することを約束します。JSON、プロトコル バッファ、モールス信号など、好きなものを使用してください。
AMQP にあるような組み込みのルーティングはありません。繰り返しますが、どの ZeroMQ ソケットがどれに接続するかを指定するのはあなた次第ですが、これは非常に簡単です。
安定
私は数か月間(Pythonを使用して)開発してきましたが、安定性に関する単一の問題は見つかりませんでした. 間違った方法で使用しようとしても、そうしないようにという素敵なエラーがスローされます。一部のサービスを再起動/強制終了して元に戻しても、問題は発生しません。非常に安定したソフトウェアだと思います。
注: 常に最新バージョンを使用してください - 2.1 バージョンは非常に安定性重視であるため、多くの安定性の問題が解決されています。
コミュニティ
20 を超える言語のバインディング、アクティブなメーリング リスト、非常に優れたドキュメント、頻繁なリリース。他に何か?
統合
ライブラリとして設計されているため、(フレームワークの場合とは異なり) アプリケーションを設計するのはあなた次第であり、かなり際立っています。通常の TCP ソケットに少し似ていますが、はるかに強力で使いやすくなっています (通常のソケットの場合のように、メッセージが最初の 128 バイトと残りの部分だけでなく、全体として配信されることが保証されます)。
落とし穴
いくつかありますが、それらはすべてガイドに記載されています。(たとえば、PUB ソケットに (SUB) 接続するときに、PUB ソケットからの最初のいくつかのメッセージを見逃す可能性があります。これについては、ガイドとその処理方法のレシピに説明があります)。
全体
これは、ソフトウェアの中で最も設計されたものの 1 つだと思います。
ガイドを端から端まで読むことをお勧めします。多くの言語 (C++ を含む) の例がよく書かれており、多くのエッジ ケースと問題点が説明されています。