how2j.cn

步骤 1 : AMQP   
步骤 2 : 消息路由过程   
步骤 3 : 模式   
步骤 4 : fanout 模式   
步骤 5 : Direct 模式   
步骤 6 : Topic 模式   

与activemq不一样, rabbitmq 使用的是一种叫做 AMQP 的协议来通信。 AMQP 是 dvanced Message Queuing Protocol 的缩写。协议内容我们就没必要深入研究了,简单地说,通过这种协议,可以处理更为复杂的业务需求~
以下就是基于 AMQP 这种协议,可以实现的各种模式
步骤 2 :

消息路由过程

edit
与 ActiveMQ 拿到消息就直接放在队列等待消费者拿走不同, Rabbit 拿到消息之后,会先交给 交换机 (Exchange), 然后交换机再根据预先设定的不同绑定( Bindings )策略,来确定要发给哪个队列。
如图所示,比起 ActiveMQ 多了 Exchange 和 Bindings。
正式由于有了 Exchange 和 Bindings, RabbitMQ 就可以灵活地支撑各种模式。
消息路由过程
RabbitMQ提供了四种Exchange模式:fanout,direct,topic,header 。 header模式在实际使用中较少,这里只讨论前三种模式.
fanout 模式就是广播模式~
消息来了,会发给所有的队列~
fanout 模式
Direct 模式就是指定队列模式, 消息来了,只发给指定的 Queue, 其他Queue 都收不到。
Direct 模式
主题模式,注意这里的主题模式,和 ActivityMQ 里的不一样。 ActivityMQ 里的主题,更像是广播模式。
那么这里的主题模式是什么意思呢? 如图所示消息来源有: 美国新闻,美国天气,欧洲新闻,欧洲天气。
如果你想看 美国主题: 那么就会收到 美国新闻,美国天气。
如果你想看 新闻主题: 那么就会收到 美国新闻,欧洲新闻
如果你想看 天气主题: 那么就会收到 美国天气,欧洲天气
如果你想看 欧洲主题: 那么就会收到 欧洲新闻,欧洲天气。

这样就可以灵活搭配~
Topic 模式


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2019-04-22 AMQP 是 dvanced Message Queuing Protocol 协议 单词少了个A
君不见黄河之水天上来

与activemq不一样, rabbitmq 使用的是一种叫做 AMQP 的协议来通信。 AMQP 是 dvanced Message Queuing Protocol 协议 虽然英语不好,但是 dvanced 好像少了个A =>Advanced




5 个答案

iloveyou无望
答案时间:2019-10-24
可以就是喜欢这么认真的人

李敏
答案时间:2019-09-20
懒站长

qugengting
答案时间:2019-08-30
站长太懒,这么久还不改过来

how2jcxp
答案时间:2019-06-10
u r sooooooo cute.

Goldmeng
答案时间:2019-04-24
you are soo cute



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到








提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 工具和中间件-消息中间件-模式讲解 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图