我已经为eJabberd编写了一些扩展模块,其中大多数扩展模块因为各种原因向RabbitMQ传递信息。在我们将服务器升级到拥有Rabbit集群的地方而不是单个盒子之前,所有情况都很好。如何将额外参数传递给Erlang客户端中的RabbitMQ连接
为了利用集群,您需要通过“all”或“nodes”值将“x-ha-policy”参数传递给Rabbit。这对Java和Python生产者和消费者来说工作得很好,但eJabberd(当然使用Erlang AMQP客户端)让我有点难过。 x-ha-policy参数需要传递给“client_properties”参数,这个参数就是额外参数的“catchall”。
在Python与鼠兔我可以这样做:
client_params = {"x-ha-policy": "all"}
queue.declare(host, vhost, username, password, arguments=client_params)
和工程。然而,对于Erlang的客户端医生说的论据应该传递在为每一个列表:
[{binary(), atom(), binary()}]
如果只是[{二进制(),二进制()}]我可以看到与键/值的关系但不知道原子会在那里。我很清楚,我是Erlang的新手程序员,所以这可能是一个我不熟悉的常见构造,所以没有答案太明显。