我已經爲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的新手程序員,所以這可能是一個我不熟悉的常見構造,所以沒有答案太明顯。