私は eJabberd 用のいくつかの拡張モジュールを作成しましたが、そのほとんどはさまざまな理由で情報の断片を RabbitMQ に渡します。単一のボックスではなく、Rabbit クラスターがあるステージングでサーバーを立ち上げるまで、すべて問題ありませんでした。
クラスタを利用するには、「x-ha-policy」パラメータを「all」または「nodes」のいずれかの値で Rabbit に渡す必要があります。これは、Java および Python のプロデューサーとコンシューマーに対しては問題なく機能しますが、eJabberd (もちろん Erlang AMQP クライアントを使用) には少し困惑しています。x-ha-policy パラメーターは、追加パラメーターの単なる「キャッチオール」である「client_properties」パラメーターに渡す必要があります。
Python with pika では、次のことができます。
client_params = {"x-ha-policy": "all"}
queue.declare(host, vhost, username, password, arguments=client_params)
そしてそれはうまくいきます。ただし、Erlang クライアントのドキュメントには、次のように引数をリストとして渡す必要があると書かれています。
[{binary(), atom(), binary()}]
[{binary(), binary()}] だけの場合、キーと値の関係はわかりますが、アトムが何になるかはわかりません。
明確にするために、私は初心者のErlangプログラマーなので、これは私が慣れていない一般的な構造である可能性があるため、答えは明らかではありません.