RabbitMQ学习之:(一)初识、概念及心得

由于网上有一篇很好的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里面某些参数都是字符串,而不是通常类库的对象实例。rabbitmq

 

那个做者其实没有明确交代清楚几个基本的概念:字符串

  1. Consumer是直接从Queue里面取消息的,不用通过Exchange。这点要牢记,并且从全部取消息的API,只接受Queue的名字,就能够印证。it

  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关系图:im

 

 

 

 

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

 

相关文章
相关标签/搜索