springboot整合rabbitmq向不同交换机发送消息


1.导入依赖

    org.springframework.boot

    spring-boot-starter-amqp


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

你可能感兴趣的:(springboot整合rabbitmq向不同交换机发送消息)