SpringBoot成神之路--22.rabbitMQ的底层配置实现及单播广播测试及消息队列的监听及注解AmqpAdmin的使用(二)

目录

 

一、springboot项目整合rabbitMQ

1、创建springboot项目

 2.rabbitMQ的底层配置实现

3.单播测试 

测试发送消息

 测试接收消息

 序列号json数据发送

4.测试广播

5.消息队列的监听

 测试:

 总结

6.注解AmqpAdmin的使用

创建exchange

 创建队列

 创建绑定规则


一、springboot项目整合rabbitMQ

1、创建springboot项目

 2.rabbitMQ的底层配置实现

我们可以看到rabbitMQ的底层配置属性的核心在于RabbitProperties配置类

 我们可以看到,这些属性都是在配置文件中可以配置的

 可以看到默认的虚拟机主机和我们创建的是一样的,我们可以不用指定

 springboot的配置文件

3.单播测试 

测试发送消息

 进入到rabbitMQ中查看消息

由于采用的是java默认的序列化方式 

 

 测试接收消息

运行 

 

 然后我们就可以看到rabbitMQ对应的消息队列里面就没有了

 序列号json数据发送

默认使用的消息转换器

 因此我们可以换一个MessageConverter

我们可以看到在MessageConverter的子类中有json类

创建自定义的MessageConverter

 

注入到IOC容器之后,会自动生效 

 

 再次发送

 也能收到

4.测试广播

5.消息队列的监听

监听指定的消息队列中的消息,一旦有消息进来就会被调用执行

 在启动主类上添加开启rabbitMQ的注解方式

 测试:

 启动测试之后,后台马上打印出消息

测试消息类获取到的内容

 打印出两个

 总结

一定接收方法的对象是队列,发送消息的对象是交换器和队列

6.注解AmqpAdmin的使用

AmqpAdmin:创建和删除 queue,exchange,binding

创建exchange

 

创建exchange

 在DirectExchange的构造参数中可以加入多个参数,和在rabbitMQ的管理界面创建的参数内容是相同的

 

运行测试

 

 创建队列

 

 创建绑定规则

 运行测试

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我理解了你的问题。首先,你需要在docker中部署canal,mysql和rabbitmq。你可以使用以下docker-compose.yml文件来创建这些容器: ```yaml version: '3.7' services: canal: image: canal/canal-server:v1.1.4 ports: - "11111:11111" - "11112:11112" environment: - canal.auto.scan=false - canal.instance.master.address=mysql:3306 - canal.instance.dbUsername=root - canal.instance.dbPassword=123456 - canal.instance.connectionCharset=UTF-8 - canal.instance.tsdb.enable=true - canal.instance.gtidon=false depends_on: - mysql mysql: image: mysql:8.0.30 environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=test ports: - "3306:3306" rabbitmq: image: rabbitmq:3-management ports: - "5672:5672" - "15672:15672" ``` 这个docker-compose.yml文件将创建三个服务:canal、mysql和rabbitmq。你需要注意的是,canal实例的master地址设置为mysql,这意味着canal将从mysql中获取数据。mysql的root密码设置为123456,数据库名为test。rabbitmq使用默认端口5672和15672。 接下来,你需要创建一个名为example的canal配置文件,该文件包含要同步的表和目标rabbitmq队列的名称。以下是一个示例配置: ```properties canal.instance.master.address=mysql:3306 canal.instance.dbUsername=root canal.instance.dbPassword=123456 canal.instance.filter.regex=.*\\..* canal.mq.topic=example canal.mq.partition=0 canal.mq.dynamicTopic=false canal.mq.partitionsNum=3 canal.mq.replicationFactor=3 canal.mq.rabbitmq.host=rabbitmq canal.mq.rabbitmq.port=5672 canal.mq.rabbitmq.virtualHost=/ canal.mq.rabbitmq.username=guest canal.mq.rabbitmq.password=guest canal.mq.rabbitmq.exchange=canal.exchange ``` 在上面的配置中,我们指定了canal实例作为mysql:3306的主服务器,并设置了mysql的root用户名和密码。canal.instance.filter.regex指定要同步的所有表。canal.mq.topic指定要将更改发送到的rabbitmq队列的名称。canal.mq.rabbitmq.host指定rabbitmq的主机名,端口为5672。注意,这里的rabbitmq主机名必须与docker-compose.yml文件中的服务名称相同。 最后,你需要在canal服务中挂载example配置文件。修改docker-compose.yml文件,如下所示: ```yaml version: '3.7' services: canal: image: canal/canal-server:v1.1.4 ports: - "11111:11111" - "11112:11112" environment: - canal.auto.scan=false - canal.instance.config.file=/canal/conf/example.properties depends_on: - mysql - rabbitmq volumes: - ./example.properties:/canal/conf/example.properties:ro mysql: image: mysql:8.0.30 environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=test ports: - "3306:3306" rabbitmq: image: rabbitmq:3-management ports: - "5672:5672" - "15672:15672" ``` 在修改后的docker-compose.yml文件中,我们将example.properties文件挂载到canal服务的/canal/conf目录中,并将canal.instance.config.file设置为该文件的路径。现在,启动docker-compose: ```sh docker-compose up -d ``` 现在,你有了一个可以将mysql更改同步到rabbitmq的canal实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值