ruby - Ruby 中的监听器 : Bunny Gem or AMQP gem

标签 ruby rabbitmq amqp

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

最佳答案

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

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

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

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

看看jondot/sneakers用于现成的 Bunny 框架。

关于ruby - Ruby 中的监听器 : Bunny Gem or AMQP gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18961365/

相关文章:

java - 如何稍后重新使用被拒绝的消息,RabbitMQ

java - RabbitMQ:消息保留为 "Unacknowledged"

java - 如何在 Qpid 中设置安全提供程序以允许匿名以及名称/密码身份验证?

rabbitmq - RabbitMQ 中的漏洞 : disable cleartext authentication mechanisms in the amqp configuration

Ruby:产量在可枚举范围内

objective-c - NSJSONSerialization.JSONObjectWithData 浮点转换/舍入错误?

golang rabbitmq channel.consume SIGSEGV

arrays - 有没有比数组更轻量级的替代品?

css - Rails 3.1 中的 CSS 样式有什么问题?

spring-boot - Spring AMQP 多个消费者与更高的预取值