【发布时间】:2015-01-14 22:28:02
【问题描述】:
现在我正在使用 rabbitMQ 在两个程序之间发送数据 - 1 个队列、1 个通道、1 个交换。我将把它扩展为多线程,我想在第二个线程上声明另一个队列。
- 我知道在这种情况下我应该使用另一个渠道,但我想知道是否有必要以不同的名称声明另一个交易所?
- 两者究竟是什么关系?
- 在什么情况下需要多次交换?
【问题讨论】:
现在我正在使用 rabbitMQ 在两个程序之间发送数据 - 1 个队列、1 个通道、1 个交换。我将把它扩展为多线程,我想在第二个线程上声明另一个队列。
【问题讨论】:
如您所见,channel 是用于到达 rabbitMQ 对象的通信端点。
目前有两种对象:
打个比方,队列是消息在其中积累的管道,而交换是管道之间的 T 形、十字形和其他类型的连接器。
也许将其与物理网络进行比较会更好,其中队列就像电缆,交换机像交换机或智能集线器,不同的分配策略可以被选中。
所以基本上,你需要做的只是从新的消费者线程创建一个新队列,让它连接到交换对象(你应该有一个名字),然后让生产者线程将它的消息发送到专门交换对象。任何新线程都可以遵循相同的协议。
最后一点是为交换对象、循环、扇出等选择正确的分发方法,具体取决于您希望消费者接收消息的方式。
【讨论】:
看看我们对 AMQP 概念的介绍
【讨论】: