rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用
一,springboot整合rabbitMQ
为了后续的实战,这里创建2个项目,一个消息生产者,一个消息消费者。
rabbitMQ的基本配置信息很简单,就一个pom引入和yml配置连接信息,详细如下图所示:
第一步,pom文件引入rabbitMQ,也需要引入web模块,为了后续的实战需要。
第二步,配置yml的连接信息
两个项目的配置都是类似的,就server.port和spring.application.name需要修改。
二,各种类型交换机的实战
1.Direct Exchange
首先,先做一个Direct交换机的配置类
注意,导入的是在core包下的,不要导错了。
一个模拟实际场景发送消息的操作
根据路径发起一个请求
到rabbitMQ的管理页面查看刚刚的消息能否正确发送
ready:准备好被消费的消息,total:消息总数
在这里也可以看到我们的队列。
好了,消息生产者搞完,开始做一个消息的消费者。开始的配置都一样,这里就不再重复放图了。
消费者的配置文件:
注:消费者其实可以不用加这个配置文件,因为它只需负责消费消息即可,如果加上这个配置,那么它也相当于一个生产者,有推送消息的能力。
消费者的具体处理:
运行程序,消费消息
如果有多个消费者,会发生什么情况呢?我们多做一个消费者,来看看。
不断请求生产者的生产消息请求,不断生成消息。查看消费者控制台的输出。
结果很明显,是两个消费者交替消费消息。但是在高并发的场景下,还是会有消息被重复消费的情况,这个问题后续解决。
2.Fanout Exchange
第一步,配置Fanout交换机
第二步,编写生产消息请求
第三步,在消费者项目里加上消费者
新增消费者完成,这次就不加消费者的配置类了。
最后直接运行生产者和消费者两个项目,调用生产者生产消息的接口,查看结果。
可以看到,三个消费者都能接受到信息,这就类似与一个发布/订阅的功能。
3.Topic Exchange
第一步,配置topic交换机和队列
第二步,编写生产消息的请求
生产者这边已经准备完成了,然后到消费者那边
第三步,在消费者项目里,新增2个消费者
一个监听着topic.man的队列,一个监听着topic.woman队列
第四步,加上一个配置文件(可以不用加)
注:消费者其实可以不用加这个配置文件,因为它只需负责消费消息即可,如果加上这个配置,那么它也相当于一个生产者,有推送消息的能力。
最后,启动项目,调用生产者生产消息的接口,查看结果。
调用生产绑定topic.man路由健的接口:
可以看到,2个消费者都能接受到消息。
再调动绑定topic.woman路由键的接口:
可以发现,只有TopicTotalReceiver才能接收到消息,因为它的路由键是topic.#,表示只要是topic开头的消息都能接收到。