当使用RabbitMQ发送消息时,您基本上有交换,队列和绑定。我已经理解了他们的想法以及他们如何相互联系,但我不确定是谁设置了什么。
基本上,我的应用程序中有三个场景。
我想要实现的是一个将消息发送到队列的组件,并且应该有几个处理该队列中项目的工作进程。这对我来说似乎很容易。设置如下:
每当消息被发送到交换机时,它就会被传递到队列,并且工作进程会完成它们的任务。
一切都应该持久。
那么谁设置了什么?在我看来:右?
第二种情况完全不同。基本上,它是一个发布/订阅场景,其中每个消息都发送到每个当前正在侦听的客户端。如果客户端脱机,它不再接收消息,并且不会存储在任何地方。这意味着以下设置:
右?
基本上与方案2相同,但如果消费者离线,则不应丢失消息。在我看来,这不应该改变任何事情 - 对吧?
答案 0 :(得分:6)
我认为你说的是正确的,除了情景3。
如果消费者离线时不应丢失消息,则需要持久队列,并且队列不能自动删除。
其他一切似乎都适合我。
对于方案2,您还可以让RabbitMQ为您自动生成队列名称,然后在消费者断开连接时让这些队列自动删除。