当使用RabbitMQ发送消息时,您基本上有交换,队列和绑定 . 我理解他们的想法以及他们如何相互联系,但我不确定是谁设置了什么 .
基本上,我的应用程序中有三个场景 .
场景1:一个发布者,多个工作进程
我想要实现的是一个将消息发送到队列的组件,并且应该有几个处理该队列中的项的工作进程 . 这对我来说似乎很容易 . 设置如下:
交换:1交换类型'direct'
队列:1个队列
绑定:队列绑定到交换机
每当将消息发送到交换机时,它就会被传递到队列,并且工作进程会完成其任务 .
一切都应该是耐用的 .
那么谁设置了什么?在我看来:
制片人创造交流
生产环境 者创建队列(因为当前可能没有正在运行的工作进程,如果没有队列,则消息将丢失)
Producer将队列绑定到交换机
消费者只是听队列
对?
场景2:一个发布者,多个订阅者,易失性消息
第二种情况完全不同 . 基本上,它是一个发布/子方案,其中每条消息都发送到每个当前正在侦听的客户端 . 如果客户端脱机,它不再接收消息,并且不会存储在任何地方 . 这意味着以下设置:
交换:1交换类型'fanout'
队列:n个队列,每个消费者一个队列
绑定:每个队列都需要绑定到交换机
那么谁设置了什么?在我看来:
制片人创造交流
Consumer创建队列(因为它是自己的队列, 生产环境 者无法知道谁对这些消息感兴趣)
Consumer为其队列创建绑定到交换
Consumer侦听其队列
对?
场景3:一个发布者,多个订阅者,持久消息
与方案2基本相同,但如果消费者离线,则不应丢失消息 . 在我看来,这不应该改变任何事情 - 对吗?
版权声明:本文为weixin_33472998原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。