消息列队不作过多解释了,直接讲讲rabbitmq的基本概念和路由模式。html
1、安装及基本概念git
rabbitmq是基于erlang编写的,因此安装rabbitmq以前须要安装erlang的环境,配置环境变量,百度便可。github
connectionFactory、connection、channel不作过多介绍,基本步骤为spring
1.初始化链接工厂
2.从链接工厂获取链接
3.在链接中打开一个通道
4.在通道中声明交换机
5.在通道中声明一个列队(或多个)
6.绑定列队到交换机
7.进行相关操做浏览器
2、工做模式(路由模式)post
生产者--消费者模式基本的模式是生产者生成消息,投入到列队中,须要的消费者(订阅)去列队拿消息进行处理。插件
rabbitmq在这里进行了一个中间处理,消息投递给哪一个列队由路由器或者称交换机(Exchange)来处理,即生产者不直接将消息投递到列队中,而是投递到交换机,具体要投递到哪一个列队,由交换机根据路由规则来肯定。htm
相似于寄信,寄送人不直接将信件投递到派件员手中,而是投递到邮局,邮局根据信件的地址来决定到送到哪位派件员手上,进而送达收件人。这也是rabbitmq的一个特色和强大之处。blog
因此,rabbitmq的工做模式就是producer将消息投递到特定的exchange,queue按routing key订阅消息(例如,列队A订阅了交换机E的路由键为test的消息,那么一个生产者投递两个消息到E中两个消息,routing key分别为test和test2,那么A列队的只能收到路由键为test的消息),符合路由键的消息将被分发到具体的列队中。接口
交换机经常使用的路由方式有四种,fanout、direct、topic、header。header用的较少,本身也没用过,不作介绍了。
1.fanout是简单地将消息分发给全部列队,如图
列队1和列队2均能拿到两个消息(message、message2)
2.direct是根据路由键直接分发,如图:
如存在交换机E,列队1和列队2绑定到交换机的routing key分别为boys和girls。如今一个生产者分别按照routing key为boys和girls投递了消息message和message2,那么列队1中会获得message,列队2或获得message2。
3.topic能够说是是direct的扩展,引入了匹配模式,路由规则以下
生产者投递上述三个消息,则列队1拿到message和message3,列队2拿到message2和message3,列队3三个消息均能拿到。
3、实例
下面是本人在GitHub上面rabbitmq的demo:
入门级实例 https://github.com/littlechaser/rabbitmq.git
与springMVC整合 https://github.com/littlechaser/SpringRabbitMQ.git
与springMVC整合的项目发送消息调接口可以使用火狐浏览器插件RestClient、谷歌浏览器插件postman等。(postman须要FQ下载)
转自https://www.cnblogs.com/xiao-tao/p/6889745.html