使用rabbitmq,genbunny和牛仔事件通知器的消息广播

时间:2013-05-30 09:19:33

标签: erlang websocket rabbitmq cowboy

我有两个连接到RabbitMQ的牛仔服务器运行实例。我使用gen_bunny作为RabbitMQ客户端连接到RabbitMQ。

如果使用bunnyc:consume(),我可以从rabbitMQ中使用该消息。但是,为此,我需要明确地触发此方法。我想要的是在牛仔上绑定一个事件,一旦队列中有消息,它就会自动通知牛仔。

是否可以使用gen_bunny或其他erlang客户端?

2 个答案:

答案 0 :(得分:2)

不了解gen_bunny,但使用官方的erlang客户端,您可以订阅队列(查看http://www.rabbitmq.com/erlang-client-user-guide.html,“订阅队列”部分)

据我所知,您需要通过WebSockets将消息从队列发送到客户端。因此,您需要订阅与客户端通信的进程中的队列。并在“receive ... end”或handle_info中接收消息(取决于实现)

ADDITION

我查看了gen_bunny来源... mochi / gen_bunny依赖于提供amqp_channel的mochi / amqp_client:subscribe / 3(参见https://github.com/mochi/amqp_client/blob/master/src/amqp_channel.erl#L177)你可以用它来订阅

答案 1 :(得分:0)

搞定了......在bunnyc.erl源代码中进行了一些调整。现在,在init函数中我添加了订阅函数,并在bunnyc.erl的start_link函数中传递了我的牛仔进程的进程ID,所以只要队列中有消息,我就可以在cowboy的websocket_info函数中得到它。