1.导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.yml配置rabbitmq
virtual-host: /默认就是斜杠,具体查看rabbitmq后台admin栏。如果默认这行不用写。
spring:
rabbitmq:
host: 127.0.0.1
username: admin
password: admin
virtual-host: / #可以不用写
3.发送direct消息
direct 类型的行为是”先匹配, 再投送”. 即在绑定时设定一个routing_key, 消息的routing_key匹配时, 才会被交换器投送到绑定的队列中去.
(1).我们在RabbitMQ后台新建一个交换机,demo-direct交换机名,direct交换机类型,Durable持久化:
(2).再新建一个消息队列,取名为demo:
(3).点击demo-direct交换机进入绑定消息队列demo:
如果没有指定routingkey,消息队列的名称就是routingkey
(4).绑定成功后查看:
你可以直接在交换机页面下方的Publish message发送消息,在消息队列的Get message查看消息,不过我们实际生产比较多使用编程:
在Spring Boot创建单元测试
demo-direct交换机名
demo是该交换机绑定的消息队列名
发送消息
此时发送消息我们在rabbitmq网页发现消息是经序列化后的,我们如果想改变序列化机制为JSON,也很简单,只需要注入一个人Bean:
然后我们再启动测试,发送。
接收消息
demo是消息队列名,也就是消费者只需要得到消息队列的名字就可以接收队列中的消息。
查看打印
{msg=true,key=值}
4.广播fanout消息
转发消息到所有绑定队列(广播:忽略routing_key )
1.首先我们需要在RabbitMQ后台创建一个广播交换机:
2.再创建一些(demo1,demo2)消息队列,以一个作为演示:
3.进入创建的交换机页面:
4.交换机与消息队列(demo1,demo2)进行绑定:
如果没有指定routingkey,消息队列的名称就是routingkey
在Spring Boot创建单元测试
注意在广播模式下会忽略忽略routing_key
发送消息
接收消息
打印输出:
{name='<西游记>',anthony='吴承恩'}
5.发送topic消息
按规则转发消息(使用通配符)
1.在rabbitmq后台新建一个topic交换机
2.新建一个消息队列demo
3.交换机绑定消息队列,注意此处的路由键Routing key使用了通配符
*表示一个词.
#表示零个或多个词.
那我们如何区分几个字母为一个单词呢?
答案是通过”点分”的 routing_key 形式,比如两个单词是*.demohello.demo,
如果路由键为demo.#,那可以匹配demo.开头的所有路由键。
4.查看此时的交换机
在Spring Boot创建单元测试
发送消息
接收消息
打印输出
msg=true,key=topic交换机}
6.代码创建交换机与消息队列
(1).上面演示的是通过RabbitMQ网页后台创建,通过编程的方式也非常简单:
(2).登录后台查看,创建成功!
7.监听消息队列
监听消息队列,当有消息发到消息队列,立马获取并操作。方法也很简单。
1.开启基于注解的Rabbit模式
2.@RabbitListener注解实现监听
注意此时你的消息队列已经有了demo和demo.news
网友评论