springboot结合rabbitmq实现队列消息

svbadmin学习日志

本学习日志是使用Springboot和Vue来搭建的后台管理系统:
演示地址:http://118.31.68.110:8081/index.html
账号:root
密码:123
所有代码可以在gitbub上找到,切换到相应分支即可。【代码传送门】

正篇

第一节 spring boot 模块化构建项目
第二节 整合mybatisplus完成用户增删改查
第三节 整合springsecurity实现基于RBAC的用户登录
第四节 springsecurity结合jwt实现前后端分离开发
第五节 使用ResponseBodyAdvice格式化接口输出
第六节 springboot结合redis实现缓存策略
第七节 springboot结合rabbitmq实现队列消息
第八节 springboot结合rabbitmq实现异步邮件发送
第九节 利用springboot的aop实现行为日志管理
第十节 利用Quartz实现数据库定时备份
第十一节 springboot配置log输出到本地文件
第十二节 使用flyway对数据库进行版本管理
第十三节 springboot配合VbenAdmin实现前端登录
第十四节 springboot配合VbenAdmin实现用户CURD
第十五节 基于RBAC的权限管理VbenAdmin前端实现
第十六节 springboot 打包vue代码实现前后端统一部署

番外

2.1 数据库设计原则
3.1 配置apifox自动获取登录的token
13.1 springboot 全局捕捉filter中的异常
14.1 springsecurity整合mybatisplus出现isEnable的问题和解决方案


前言

消息队列的作用不言而喻,削峰,解耦都是不错的。这里我们用的是rabbitmq来实现消息队列。


一、搭建rabbitmq服务器

这个其实不同的服务器安装略有差异,底部参考文档有关于ubuntu下安装rabbitmq的教程,我试了下可以使用。这里推荐大家一个docker工具集,laradock,原则上是个php开发用的,但用来搭建一些测试环境也是没问题的,里面有很多镜像可以使用。下载下来后,在文件夹内执行

docker-compose up -d rabbitmq

springboot结合rabbitmq实现队列消息_第1张图片

# 添加一个admin
docker-compose exec rabbitmq rabbitmqctl add_user admin 123456
# 设置管理员权限
docker-compose exec rabbitmq rabbitmqctl set_user_tags admin administrator
# 配置用户可以远程登录
docker-compose exec rabbitmq rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

访问 http://127.0.0.1:15672/

springboot结合rabbitmq实现队列消息_第2张图片

二、业务编码

接下来实现在用户新增的时候,加入一条消息,用于后面发送邮件。

1.admin-service中加入依赖

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

2. RabbitDirectConfig

这里我们使用最常用的Direct策略。

@Configuration
public class RabbitDirectConfig {
    @Bean
    Queue queue(){
        return new Queue("add-user");
    }
}

3. 配置一个消费者

这里暂时配置一个测试的消费者,下一讲再和邮件服务结合起来。

@Component
public class TestDirectReceiver {
    @RabbitListener(queues = "add-user")
    public void handler1(String msg){
        System.out.println("有新用户添加进来了:" + msg);
    }
}

4. 发送消息

在新增一个user时发送一条消息到rabbitmq

 @Override
 public boolean save(User entity) {
     rabbitTemplate.convertAndSend("add-user", "add"+entity.getName());
     return super.save(entity);
 }

测试

添加一个user , 打印成功。rabbitmq中queue也出现了。因为及时消费掉了,所以数据为0。

在这里插入图片描述
springboot结合rabbitmq实现队列消息_第3张图片

注释掉消费者,再添加一个用户,则 Ready 中有了一个消息。

springboot结合rabbitmq实现队列消息_第4张图片


总结

  1. 细节不多,记得rabbitmqctl的命令都要跑,不然可能会连不上,特别是配置远程登录

问题

  1. 米的妈妈是谁?
  2. 米的外婆是谁?

代码地址

代码


参考文档:
linux(ubuntu20)下载安装RabbitMQ

你可能感兴趣的:(svbadmin,spring,boot,java-rabbitmq,rabbitmq)