**
springboot 集成 RabbitMQ
**
简介:RabbitMQ概念及下载安装
- 上图演示的是消息队列(MQ)的三个基本组成部分,生产者发消息到消息队中去,消费者监听指定的消息队列,并且当消息队列接收到消息后,接收队列传来的消息,并做相应的处理。
(此图来源于网络)
- 上图演示的是RabbitMQ的四个基本组成部分,除了MQ三个基本模块以外,还添加了一个模块,即交换机(Exchange).它使得生产者和消息队列之间产生了隔离,生产者将消息发送给交换机,而交换机则根据调度策略把相应的消息转发给对应的消息队列。
- 交换机有四种类型,分别为Direct,topic,headers,Fanout。
1.Direct Exchange:direct 类型的行为是"先匹配, 再投送". 即在绑定时设定一个 routing_key, 消息的routing_key 匹配时, 才会被交换器投送到绑定的队列中去(最简单)。
2.Topic Exchange:按规则转发消息,转发消息主要是根据通配符。 在这种交换机下,队列和交换机的绑定会定义一种路由模式,那么,通配符就要在这种路由模式和路由键之间匹配后交换机才能转发消息(最灵活)。
在这种交换机模式下:
路由键必须是一串字符,用句号(.) 隔开。
路由模式必须包含一个 星号(),主要用于匹配路由键指定位置的一个单词,比如说,一个路由模式是这样子:agreements…b.,那么就只能匹配路由键是这样子的:第一个单词是 agreements,第四个单词是 b。 井号(#)就表示相当于一个或者多个单词,例如一个匹配模式是agreements.eu.berlin.#,那么,以agreements.eu.berlin开头的路由键都是可以的。
具体代码发送的时候还是一样,第一个参数表示交换机,第二个参数表示routing key,第三个参数即消息。如下:
rabbitTemplate.convertAndSend(“testTopicExchange”,“key1.a.c.key2”, " this is RabbitMQ!");
topic 和 direct 类似, 只是匹配上支持了"模式", 在"点分"的 routing_key 形式中, 可以使用两个通配符:
*表示一个词,#表示零个或多个词。
3.Headers Exchange:设置header attribute参数类型的交换机。headers 也是根据规则匹配, 相较于 direct 和 topic 固定地使用 routing_key , headers 则是一个自定义匹配规则的类型.
在队列与交换器绑定时, 会设定一组键值对规则, 消息中也包括一组键值对( headers 属性), 当这些键值对有一对, 或全部匹配时, 消息被投送到对应队列.
4.Fanout Exchange:转发消息到所有绑定队列 消息广播的模式,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了routing_key会被忽略。
springboot集成RabbitMQ
- 配置pom包:(发送者和接收者配置一样)
- 配置文件:(发送者和接收者配置一样)
- 创建队列:
- 接收者:
- 发送者:
- 测试:
- 双击【“rabbitmq-server”文件】连接http://127.0.0.1:15672,不清楚可以点击简介处连接。输入账号密码,启动接收端,启动发送端。
发送端控制台:
接收端控制台:
到此,一个最简单的应用就完成了。