10

我目前正在评估消息队列系统,并且 RabbitMq 似乎是一个不错的候选者,所以我正在深入研究它。

为了提供一点上下文,我希望有一个交换负载平衡消息发布到多个队列的东西。我不想复制消息,因此不能选择扇出交换。

另外,我考虑让多个队列与一个队列与消费者一起处理循环的原因是,我不希望我们的单点故障出现在队列级别。

听起来我可以在发布者端添加一些逻辑,通过编辑路由键并设置适当的绑定来模拟该行为。但这是一种被动的方法,它不会考虑每个队列上消息消费的速度,如果该队列的消费者应用程序死了,可能会导致填满一个队列。

我正在从交换实体方面寻找一种更积极主动的方式,它将根据每个队列大小或类似性质的东西来决定将下一条消息发送到哪里。

我读到了 Alice 和可用的 RESTful API,但这似乎是一种实现快速路由决策的重型解决方案。

任何人都知道交换队列之间的循环是否可以使用 RabbitMQ?谢谢。

4

3 回答 3

4

交换在 AMQP 模型中通常是无状态的,尽管最近有一些有状态交换的实验,现在既有用于管理 RabbitMQ 插件的系统,也有用于提供新的实验交换类型的系统。

没有什么可以完全满足您的要求,我不认为,尽管我不完全确定我理解要求。除了单点故障点之外,拥有一个带有工作人员读取它的队列会解决您的问题吗?如果是这样,那么您的问题就归结为在允许您使用该解决方案的 HA 配置中配置 RabbitMQ。有两种方法可以做到这一点:要么使用 HALinux 和共享存储来获得具有快速故障转移的主动/被动 HA,要么设置多个并行代理并在客户端上进行重复数据删除,可能使用 redis 或类似方法。

我建议在 rabbitmq-discuss 邮件列表上再次询问您的问题,更多的人将能够提供建议,并且可以将讨论存档以供后代使用。

于 2010-04-12T23:56:44.230 回答
1

同意托尼的方法。

这是 RabbitMQ,Redis 的“混搭”,您可以使用它而不是自己滚动 - http://xing.github.com/beetle/

于 2010-04-15T04:29:00.590 回答
1

一种内置的方式可以将表单交换共享到队列,但不完全是循环,是一致性哈希。rabbitmq_consistent_hash_exchange

怎么样 https://medium.com/@eranda/rabbitmq-x-consistent-hashing-with-wso2-esb-27479b8d1d21

论文解释一下,它将队列按加权分布放在一个圆圈上,然后通过发送随机路由密钥将发送到最近的队列。 http://www8.org/w8-papers/2a-webserver/caching/paper2.html

于 2017-07-04T12:01:33.050 回答