4

我正在尝试将 RabbitMQ 用于可以工作的分布式系统:

  • 生产者将 JSON 格式的订单 ID 列表放入队列
  • 几个消费者退出该队列,使用该订单 ID 执行业务逻辑,并将结果(JSON 格式)放回另一个队列
  • 从第二个队列中,另一个消费者将获取数据并将其传回给调用者

我对 RabbitMQ 还是很陌生,我想知道这个模型是否是正确的方法,因为数据应该尽可能快地返回(有时在几秒钟内,最多 5 秒)所以有实时要求。此外,传递给队列的消息可以有多大?根据消费者的行为,生产者将返回的 JSON 将相当大。

感谢您的任何想法!

4

2 回答 2

2

请参阅本演示文稿( InfoQ ) 的第 47 页,了解不同消息传递格式之间的重要比较。

于 2010-09-17T11:23:35.547 回答
1

你建议的设计没有问题。

轻微的皱纹是执行“实时要求”并不简单。例如,当前不可能使队列中的消息过期,因此这需要由客户端在使用消息时进行处理。

RabbitMQ <=1.8.1 中消息的总大小受可用 RAM 量的限制。从 2.0.0 开始,它受到可用磁盘空间量的限制(即,如果内存不足,rabbit 会将消息分页到磁盘)。单个消息大小记录为 32 位整数 (IIRC),因此单个消息不能大于 ~4GB;如果这是一个问题,请考虑将 JSON 保存到网络存储并在消息中将一些 ID 传递给它们。除此之外,没有任何限制。

于 2010-09-17T11:16:36.263 回答