RabbitMQ - 最佳实践

时间:2016-07-11 09:38:34

标签: rabbitmq

我正在尝试同步我拥有的三个微服务。

为了做到这一点,我实施了RabbitMQ。 好像目前的工作似乎有效,但我不确定我是否遵循最佳实践,而且我找不到提及它的参考,也许有人可以帮助我?

简要介绍我要做的事情: 我有一个服务谁应该更新另外两个, 每个服务都应该收到发送的消息。 我有两种类型的消息(保存和删除资源)。 *如果出现故障,队列应恢复并重新发送消息。

我目前正在做什么: 我已经建立了一个交换机,每个消费者都连接到两个不同的队列,每个队列对应一种消息类型(保存/删除)。 我已经使用了直接交换,以便稍后过滤消息,即使目前我不需要过滤它们。

每个队列都被命名,交换和消息都是持久的,我正在处理我已经消费的消息。

问题 我应该为每种类型的事件设置不同的队列,还是应该在同一队列上发送消息并过滤它们? 上面描述的RabbitMQ的使用是否是问题的正确解决方案。 什么是最佳做法?

1 个答案:

答案 0 :(得分:1)

您的设置正确无误。

在Rabbit中设计队列时的一个常见规则是,一种类型的队列(这里的类型表示不同的处理逻辑)是消费者。所以,既然你有两种类型的消费者。它们对于不同类型的事件(保存/删除)具有不同的逻辑,每个事件的一个队列完全正确。

如果你想只有一种类型的消费者,它可以同时处理保存和删除事件,那么使用一个队列也没关系。

但是两种类型的消费者和一种共享队列都不起作用。当多个消费者订阅一个队列时,事件以循环方式发送给消费者,因此您的任一消费者只能接收一半的事件。