springboot 整合使用 rabbitmq

配置

依赖

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

image-20211219170605970

或者添加 maven

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit-test</artifactId>
            <scope>test</scope>
        </dependency>

springboot 配置
启动类加注解 @EnableRabbit

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

补充:虚拟主机最好也加一下,rabbitmq里不配置的话用/,
spring.rabbitmq.virtual-host=/

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);

image-20211219173024628

接收

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

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

image-20211219173805459

信息自动转换为 json

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

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

image-20211219175508932

效果图

发送:

image-20211219180030787

接受:

image-20211219180058925

监听消息

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

在 boot 主程序中打开 Rabbitmq 注解

image-20211219181813091

编写监听方法

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

image-20211219182038457

AmqpAdmin 管理组件的使用

创建 exchange

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

image-20211219183651446


创建 queue

image-20211219183907183


绑定 binding

image-20211219184944831

效果图:

posted @ 2021-12-19 18:51  yangruomao  阅读(63)  评论(0编辑  收藏  举报