设为首页 收藏本站
查看: 1389|回复: 0

[经验分享] RabbitMQ学习之:(一)初识、概念及心得

[复制链接]

尚未签到

发表于 2017-12-8 23:21:06 | 显示全部楼层 |阅读模式
  因为网上有一篇很好的RMQ的入门帖子http://lostechies.com/derekgreer/tag/rabbitmq/,所以我就不多说了,就说说我目前看了该作者1~5章后,自己的心得。(所以要看懂我写的内容,需要看完那个作者写的1~5章。你可以先跳过这一篇,因为我后面的博文会依次分析该作者的文章的,等分析完1~5章,就可以回过头来看我写的这篇了)
  首先,装好RMQ,且激活了Web管理服务之后(需要先暂停服务,然后重启,看帖子),就可以通过http://localhost:15672来访问了(用户名/密码是:guest/guest,这个虽然叫guest但是确实超级管理员权限)。
  这个网页其实很有意思,到目前为止,我觉得非常有用的内容是,他里面可以看到你声明的Queue,Exchange,RoutingKey(这个要点击某个Exchange才能看到)。看到这些有什么用呢?最重要的一点就是,他们是真实存在的!而且存在于RMQ服务器上!不存在于Producer,也不存在于Consumer。换句话说,他们不会随着你的程序的消亡而消亡!(当然你程序让他们死,他们当然会死,我指的是一般情况。)好,在展开一下,假如你的程序里面声明了一个不会自动消亡的Queue和一个Exchange,那么第一次运行,这2个对象就被创建出来了,那么他们就永远存在,第二次运行,你就不必再声明了。这就是为什么,RabbitMQ.Client里面某些参数都是字符串,而不是一般类库的对象实例。
  那个作者其实没有明确交代清楚几个基本的概念:
  1. Consumer是直接从Queue里面取消息的,不用经过Exchange。这点要牢记,而且从所有取消息的API,只接受Queue的名字,就可以印证。
  2. Producer要发送消息,是不能直接往Queue里面发的,必须经过Exchange,而且发消息一定要指定RoutingKey。这个也可以从发消息的API得到印证。
  3. Exchange和Queue(可以一对多)彼此是通过RoutingKey这条“纽带”来绑定的!Exchange、RoutingKey、Queue这三者关系紧密。这个也要牢记!发消息的时候,需要指定的是Exchange和RoutingKey,无法指定Queue。这个很Make Sense吧!有点像MVC的关系(Producer是Model,将消息(with RoutingKey)传给Exchange,Exchange是Controller来派发消息到指定的Queue(s))。
  4. Exchange有4种类型:Direct、Fanout、Topic、Headers。这个看后面4张图就基本可以了解。
  5. RMQ提供了一个默认的Exchange,名字是空字符串。他是Direct类型的,绑定到所有的Queue(而且每一个Queue和这个无名Exchange之间的RoutingKey是Queue的名字)。那个作者是这样说的:每当你声明了一个Queue,就会有一个默认的Exchange。我也不知道他说的对不对,反正就有那么一个默认的Exchange就对了。这个不用你显式声明(就存在)就对了。
  这里贴一下PEQC关系图:
DSC0000.png

  这里贴一下Exchange4种类型:Direct、Fanout、Topic、Headers。
DSC0001.png

DSC0002.png

DSC0003.png

DSC0004.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-422288-1-1.html 上篇帖子: [LeetCode] 226. Invert Binary Tree JAVA 下篇帖子: AMQP及RabbitMQ
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表