rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

一,springboot整合rabbitMQ

为了后续的实战,这里创建2个项目,一个消息生产者,一个消息消费者。

rabbitMQ的基本配置信息很简单,就一个pom引入和yml配置连接信息,详细如下图所示:

第一步,pom文件引入rabbitMQ,也需要引入web模块,为了后续的实战需要。

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

第二步,配置yml的连接信息

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

两个项目的配置都是类似的,就server.port和spring.application.name需要修改。

 

二,各种类型交换机的实战

1.Direct Exchange

首先,先做一个Direct交换机的配置类

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

注意,导入的是在core包下的,不要导错了。

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

一个模拟实际场景发送消息的操作

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

根据路径发起一个请求

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

到rabbitMQ的管理页面查看刚刚的消息能否正确发送

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

ready:准备好被消费的消息,total:消息总数

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

在这里也可以看到我们的队列。

好了,消息生产者搞完,开始做一个消息的消费者。开始的配置都一样,这里就不再重复放图了。

消费者的配置文件:

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

注:消费者其实可以不用加这个配置文件,因为它只需负责消费消息即可,如果加上这个配置,那么它也相当于一个生产者,有推送消息的能力。

消费者的具体处理:

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

运行程序,消费消息

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

如果有多个消费者,会发生什么情况呢?我们多做一个消费者,来看看。

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

不断请求生产者的生产消息请求,不断生成消息。查看消费者控制台的输出。

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

结果很明显,是两个消费者交替消费消息。但是在高并发的场景下,还是会有消息被重复消费的情况,这个问题后续解决。

 

2.Fanout Exchange

第一步,配置Fanout交换机

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

第二步,编写生产消息请求

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

第三步,在消费者项目里加上消费者

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

新增消费者完成,这次就不加消费者的配置类了。

最后直接运行生产者和消费者两个项目,调用生产者生产消息的接口,查看结果。

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

可以看到,三个消费者都能接受到信息,这就类似与一个发布/订阅的功能。

 

 

 

 

3.Topic Exchange

第一步,配置topic交换机和队列

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

第二步,编写生产消息的请求

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

生产者这边已经准备完成了,然后到消费者那边

第三步,在消费者项目里,新增2个消费者

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

一个监听着topic.man的队列,一个监听着topic.woman队列

第四步,加上一个配置文件(可以不用加)

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

注:消费者其实可以不用加这个配置文件,因为它只需负责消费消息即可,如果加上这个配置,那么它也相当于一个生产者,有推送消息的能力。

最后,启动项目,调用生产者生产消息的接口,查看结果。

调用生产绑定topic.man路由健的接口:

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

可以看到,2个消费者都能接受到消息。

再调动绑定topic.woman路由键的接口:

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用

可以发现,只有TopicTotalReceiver才能接收到消息,因为它的路由键是topic.#,表示只要是topic开头的消息都能接收到。