【问题标题】:Listener in Ruby: Bunny Gem or AMQP gemRuby 中的侦听器:Bunny Gem 或 AMQP gem
【发布时间】:2013-09-23 14:06:54
【问题描述】:

我想在Ruby 中创建一个监听器,它将每半小时从一个频道读取消息。我对使用哪个 Gem 感到困惑:Bunny (https://github.com/ruby-amqp/bunny) 还是 AMQP (http://rubyamqp.info)?我知道兔子很容易使用。但这能解决我的目的吗?

【问题讨论】:

    标签: ruby rabbitmq amqp


    【解决方案1】:

    您的脚本将如何被触发?有问题的数量是多少?处理是按顺序完成还是在某种基于事件的系统中完成?这两个库本质上是相同的——除了一个核心区别。

    Bunny 用于顺序处理。在检索下一条消息之前,一条消息从队列中弹出,处理然后确认。要扩展这一点,您应该使用线程或进程一次处理更多消息。

    AMQP gem 是基于事件的,并在 EventMachine 反应器中运行。这非常适合 RabbitMQ 或其他外部服务可能成为瓶颈的轻量工作负载。使用 AMQP gem,消费者将消费尽可能多的消息(或被告知),并为每条消息触发单独的回调。如果回调进行自己的网络调用,这可能是最好的解决方案,因为它允许 Ruby 最有效地交错网络通信。

    简短的总结,但基本上对于很少运行的脚本,我建议使用 Bunny 的顺序性质,特别是如果您以前没有在 EventMachine 中工作过。如果不了解您的工作量,很难完全回答。

    查看jondot/sneakers 了解现成的 Bunny 框架。

    【讨论】:

    • 感谢 boffbowsh,您的比较帮助我做出决定,我可能想先尝试 Bunny 来解决我的问题域,即每 5 秒检索一次所有消息(估计大约 0-20 条消息)跨度>
    • Bunny 非常适合我的需求。这个资源非常有帮助 rubybunny.info/articles/getting_started.html 和这个 rubybunny.info/articles/queues.html - 对于我的学习应用程序,我最终使用 pull API 一次从队列 1 中获取消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多