RabbitMQ学习之三: 发布/订阅(广播方式fanout)

本文介绍了RabbitMQ的发布/订阅模式,通过fanout交换机将消息广播给所有消费者。内容包括exchange的原理、临时队列的使用以及绑定的概念。文中展示了生产者和消费者代码示例,展示如何实现消息的广播和接收。
摘要由CSDN通过智能技术生成

参考http://blog.csdn.net/lmj623565791/article/details/37620057和RabbitMQ官网,加之自己部分修改和实验,因是新手自学,难免有不对之处,欢迎大家指正,小弟先谢过了.

上一篇文章中,我们学习了关于RabbitMQ工作队列,了解其分发消息的一些方式和消息反馈机制等等,并且假定一个任务只给一个消费者,但是在实际工作中”一对一”模式显然是满足不了需求的,在这篇文章里,我们将来实验一些尽量和实际相关度较高的例子——将一个任务发给所有消费者,然后消费者决定如何处理这些消息.

现在开始今天的第一个概念: exchange (转发器/路由器)
先摘录一段官网的话
The core idea in the messaging model in RabbitMQ is that the producer never sends any messages directly to a queue. Actually, quite often the producer doesn’t even know if a message will be delivered to any queue at all.

Instead, the producer can only send messages to an exchange. An exchange is a very simple thing. On one side it receives messages from producers and the other side it pushes them to queues. The exchange must know exactly what to do with a message it receives. Should it be appended to a particular queue? Should it be appended to many queues? Or should it get discarded. The rules for that are defined by the exchange type.
大概翻译一下:在RabbitMQ的消息模式设计中最核心的理念就是producer永远都不直接发送任何消息给队列,实际上大部分时候,producer甚至都不知道消息将会被传递到哪个队列.相反,producer只是将消息发送给exchange(转换器/路由器).其实exchange说起来只是做了一个简单的工作:
1.接收从producer发来的消息
2.把接收到的消息push给队列
有这样的工作特点,说明exchange必须清楚的知道该对它接到的消息做怎杨的处理: 是不是该把消息发送到一个特定的队列? 还是发送到很多的队列? 还是直接忽略掉? 到底该如何做,取决于你如何定义exchange的类型.

exchage类型:

 1. direct
 2. topic
 3. headers 
 4. fanout

说到这,细心的同学肯定发现了,之前的例子中并没有去声明一个e

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值