ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springboot 整合使用 rabbitmq

2021-12-19 19:02:44  阅读:190  来源: 互联网

标签:发送 用户名 springboot rabbitmq queue rabbitmqctl 整合 监听


配置

依赖

创建 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 配置

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

rabbitmq 添加可远程访问的账户

创建新用户

把新用户设置为 administrator

给新用户所有权限


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

效果图:

标签:发送,用户名,springboot,rabbitmq,queue,rabbitmqctl,整合,监听
来源: https://www.cnblogs.com/acdongla/p/15708210.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有