Springboot集成rabbitmq

1>rabbitmq环境

通过docker构建的rabbitmq容器;docker-compose 文件如下所示,其中,环境变量配置了rabbitmq的用户名和密码;

version: '2'
services:
    rabbitmq:
        image: rabbitmq:management-alpine
        container_name: rabbitmq
        environment:
            - RABBITMQ_DEFAULT_USER=admin
            - RABBITMQ_DEFAULT_PASS=123456
        ports:
            - "15672:15672"
            - "5672:5672"
        logging:
            driver: "json-file"
            options:
                max-size: "200k"
                max-file: "10"

然后通过docker-compose -f rabbitmq.yml up -d启动起来;其中15672是管理端的端口,5672是对外的api的端口;可以打开http://192.168.99.100:15672,提供了一些查看路由机,队列以及绑定的一些信息;

2>Springboot对rabbitmq的支持

rabbitmq是AMQP协议的一种实现;集成比较简单:、

     1).首先引入jar包

compile "org.springframework.boot:spring-boot-starter-amqp"

     2).配置文件

   在Spring下面配置这几个

     3).rabbitmq是通过消息的发送方不直接和队列进行数据传输,而是通过交换机,交换机根据路由键再通知到具体的队列;交换机有几种方式分别是Direct Exchange、Topic Exchange、Headers Exchange、Fanout Exchange;

先介绍下最简单的Direct Exchange的用法;

配置一个队列hello;

然后定义一个消息的发送方,往队列里面发送消息

定义一个或多个消费者,消费消息

这里经过测试会发现,多个消费者会均匀的消费消息;


接下来是用的比较多的topic的方式;增加两个队列,一个交换机,然后两个路由键和队列绑定起来;

注意的是,队列可以处理的消息是跟路由键有关系,topic.messages路由键是topic.#可以接受以topic开头的消息;而topic.message队列路由键是topic.message只能接受topic.message的消息;

下面写两个消息生产者

消费者

这里通过send1生产消息的时候,路由键是topic.message,那么队列topic.message匹配的路由键是topic.message;队列topic.messages匹配的路由键是topic.#,所以,两个队列都可以收到消息;

通过send2生产消息,则只有队列topic.messages可以收到消息;


最后是fanout模式,这种模式下不需要设置路由键,设置也会被忽略,所有绑定到某个交换机上的队列都可以收到消息,是一种广播的方式;

先定义三个度列和一个交换机,进行绑定,如下所示

再写一个生产者发送消息

最后是队列的处理消息代码

写个test方法,会发现这三个队列都会收到消息;fanout是一种广播的处理方式;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot集成RabbitMQ可以通过以下步骤实现。首先,在配置文件添加RabbitMQ的连接信息。例如,在application.yml文件配置RabbitMQ的主机、端口、用户名和密码等信息。\[1\]然后,引入SpringBoot整合RabbitMQ的依赖,包括spring-boot-starter-amqp和spring-rabbit-test等依赖项。\[2\]接下来,可以编写代码来实现与RabbitMQ的交互,例如发送和接收消息等操作。通过使用RabbitTemplate和@RabbitListener等注解,可以方便地实现消息的发送和接收。最后,可以通过运行SpringBoot应用程序来测试RabbitMQ集成是否成功。 #### 引用[.reference_title] - *1* [SpringBoot 集成RabbitMQ](https://blog.csdn.net/July_whj/article/details/120634833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Springboot整合RabbitMQ](https://blog.csdn.net/weixin_49076273/article/details/124991012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SpringBoot教程(十五) | SpringBoot集成RabbitMq](https://blog.csdn.net/lsqingfeng/article/details/123652520)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值