springboot 整合使用 rabbitmq


配置

依赖

创建 rabbitmq 项目时,选择这个依赖

或者添加 maven

        
            org.springframework.boot
            spring-boot-starter-amqp
        

        
            org.springframework.amqp
            spring-rabbit-test
            test
        

springboot 配置

spring:
  rabbitmq:
    host: ip
    username: 用户名
    password: 密码

rabbitmq 添加可远程访问的账户
因为默认用户是没有远程访问权限的,我们创建一个新用户,并赋予远程访问权限。

  1. 创建新用户

  2. 把新用户设置为 administrator

  3. 给新用户所有访问资源权限


rabbitmqctl add_user 用户名 密码    

rabbitmqctl set_user_tags 用户名 administrator

rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"

防火墙开启 5672 端口(非云服务器忽略)

发送和接收消息

发送

object 参数为要发送的消息,如果是 javabean 的话需要实现 Serializable 接口,或者使用 json(下面会说)

如果不需要路由键(例如广播),routingKey 参数为 "" 即可

rabbitTemplate.convertAndSend(exchange, routingKey, object);

接收

就像 queue 数据结构一样,接受数据同时也会弹出数据

该方法返回存储信息的 Message 对象,参数是 queue 名

信息自动转换为 json

rabbitmq 默认发送序列化后的信息,可以配置自动转换为 json 格式。这样发送和接受的信息看起来会非常直观,JavaBean 也不用再实现序列化接口了。

我们添加配置类即可,注意包名

效果图

发送:

接受:

监听消息

springboot 可以使用注解实现监听消息,每当监听到 queue 中添加了消息时,都会执行备注接的方法取出消息。

在 boot 主程序中打开 Rabbitmq 注解

编写监听方法

这里演示两种方式,一种直接接收为 JavaBean,一种接收为 Message 对象

AmqpAdmin 管理组件的使用

创建 exchange

示例:创建 direct 类型的 exchange。其他类型的改下对象前缀即可


创建 queue


绑定 binding

效果图: