SpringBoot整合多个Mq服务做法详解

目录
  • 1、自定义一个MqTemplate
  • 2、定义一个mq配置项相对应的类
  • 3、将我们自定义的mq配置定义成MqTemplate类型的bean
  • 4、使用对应的Template发送消息

以rabbitmq为例

springboot项目想要整合rabbitmq非常简单,只需要在maven中引入对应的starter即可

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

然后只需要在配置文件中配置spring.rabbitmq.***即可使用。

如果我们项目中需要配置多个mq服务的时候,springboot便不能帮我们自动加载了,我们需要手动加载对应RabbitTemplate。

具体做法如下:

1、自定义一个MqTemplate

@Data
@Component
public class MqTemplate {
    private RabbitTemplate rabbitTemplate;
    private String exchange;
    private String queue;
    private String routing_key;
}

在这里面我们定义了RabbitTemplate、交换机、路由,队列,如果需要其他的数据,也可以往上加

2、定义一个mq配置项相对应的类

@Data
@Component
class MqConfiguration {
    private String host;
    private Integer port;
    private String user;
    private String password;
    private String exchange;
    private String queue;
    private String routing_key;
}

这个类的作用是将我们配置文件中的信息转成实体类

3、将我们自定义的mq配置定义成MqTemplate类型的bean

@Configuration
public class MqConfig {
    @Bean
    @ConfigurationProperties(prefix = "mq.task-update-mq")
    public MqConfiguration taskUpdateMqConfiguration(){
        return new MqConfiguration();
    }
    @Bean
    public MqTemplate taskUpdateMq(MqConfiguration taskUpdateMqConfiguration) {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
        connectionFactory.setHost(taskUpdateMqConfiguration.getHost());
        connectionFactory.setPort(taskUpdateMqConfiguration.getPort());
        connectionFactory.setUsername(taskUpdateMqConfiguration.getUser());
        connectionFactory.setPassword(taskUpdateMqConfiguration.getPassword());
        connectionFactory.setVirtualHost("/");
        connectionFactory.setPublisherConfirms(true); //必须要设置
        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
        MqTemplate mqTemplate = new MqTemplate();
        mqTemplate.setRabbitTemplate(rabbitTemplate);
        mqTemplate.setExchange(taskUpdateMqConfiguration.getExchange());
        mqTemplate.setQueue(taskUpdateMqConfiguration.getQueue());
        mqTemplate.setRouting_key(taskUpdateMqConfiguration.getRouting_key());
        return mqTemplate;
    }
}

这里我们就将该mq配置加载成一个名为taskUpdateMq的bean。当需要添加其他的mq服务的时候,我们只需要在这个配置类里面定义bean即可

4、使用对应的Template发送消息

首先我们把taskUpdateMq注入到业务代码中

@Autowired
MqTemplate taskUpdateMq;

然后我们定义 一个发送延迟消息的接口方法

public interface MessageService {
    void sendDelayMessage(MqTemplate mqTemplate, String msg, Integer delay);
}
@Service
public class MessageServiceImpl implements MessageService {
    @Override
    public void sendDelayMessage(MqTemplate mqTemplate, String msg, Integer delay) {
        mqTemplate.getRabbitTemplate().convertAndSend(mqTemplate.getExchange(), mqTemplate.getRouting_key(), msg, message -> {
            message.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
            message.getMessageProperties().setDelay(delay);
            message.getMessageProperties().setContentType("application/json");
            return message;
        });
    }
}

调用方法的时候将MqTemplate对象传入就好了。

到此这篇关于SpringBoot整合多个Mq服务做法详解的文章就介绍到这了,更多相关SpringBoot整合Mq服务内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springboot 整合 RocketMQ 收发消息

    Springboot 整合 RocketMQ 收发消息 创建springboot项目 pom.xml添加rocketmq-spring-boot-starter依赖. <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.1.0</version>

  • SpringBoot整合多个Mq服务做法详解

    目录 1.自定义一个MqTemplate 2.定义一个mq配置项相对应的类 3.将我们自定义的mq配置定义成MqTemplate类型的bean 4.使用对应的Template发送消息 以rabbitmq为例 springboot项目想要整合rabbitmq非常简单,只需要在maven中引入对应的starter即可 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri

  • Springboot整合实现邮件发送的原理详解

    目录 开发前准备 基础知识 进阶知识 加入依赖 配置邮件 测试邮件发送 通常在实际项目中,也有其他很多地方会用到邮件发送,比如通过邮件注册账户/找回密码,通过邮件发送订阅信息等等.SpringBoot集成邮件服务非常简单,通过简单的学习即可快速掌握邮件业务类的核心逻辑和企业邮件的日常服务 开发前准备 首先注册发件邮箱并设置客户端授权码,这里以QQ 免费邮箱为例,其他的邮箱的配置也大同小异. 登录 QQ 邮箱,点击设置->账户,开启IMAP/SMTP服务,并生成授权码. 基础知识 电子邮件需要在邮

  • SpringBoot整合Apollo配置中心快速使用详解

    目录 一.简介 二.使用 1. 测试项目搭建 2. Apollo配置中心的配置 3. 项目启动与测试 4.常见整合问题 附录 一.简介 1.Apollo 是什么?Apollo(阿波罗)是携程框架部门研发的分布式配置中心.服务端基于Spring Boot和Spring Cloud开发. 2.为什么要使用Apollo? 安全性:配置跟随源代码保存在代码库中,容易造成配置泄漏 时效性:普通方式配置,修改配置,需要重启服务才能生效 局限性:无法支持动态调整:例如日志开关.功能开关 二.使用 1. 测试项

  • Springboot整合RabbitMq测试TTL的方法详解

    目录 什么是TTL? 如何设置TTL? 设定整个队列的过期时间 配置类编写 测试 配置 测试 总结 代码下载 什么是TTL? 在RabbitMq中,存在一种高级特性 TTL. TTL即Time To Live的缩写,含义为存活时间或者过期时间.即: 设定消息在队列中存活的时间.当指定时间内,消息依旧未被消费,则由队列自动将其删除. 如何设置TTL? 既然涉及到设定消息的存活时间,在RabbitMq中,存在两种设置方式: 设置整个队列的过期时间. 设置单个消息的过期时间. 设定整个队列的过期时间

  • SpringBoot整合PageHelper实现分页查询功能详解

    前言 本文介绍的是MyBatis 分页插件 PageHelper,如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件.分页插件支持任何复杂的单表.多表分页. 官方文档:https://pagehelper.github.io/ 项目地址:https://github.com/pagehelper/Mybatis-PageHelper 使用方法 导入依赖 在中央仓库sonatype中搜索 pageHelper,找到 pagehelper-spring-boot-star

  • SpringBoot整合Groovy脚本实现动态编程详解

    目录 Groovy简介 应用场景 集成与使用 第一步.与SpringBoot集成 1.pom.xml文件如下: 第二步.写出Groovy版本的“Hello World” 1.HelloWorld.groovy脚本代码 2.创建测试类GroovyTest.java 3.运行结果 第三步.传入变量与获取返回值 1.变量与返回值Groovy脚本代码 2.创建测试类GroovyTest2.java 3.运行结果 第四步.启动SpringBoot 1.创建SpringContextUtil.java 2.

  • Springboot整合JPA配置多数据源流程详解

    目录 1. Maven 2. 基本配置 DataSource 3. 多数据源配置 3.1 JpaConfigOracle 3.2 JpaConfigMysql 4. Dao层接口 1. Maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

  • SpringBoot整合Mybatis与druid实现流程详解

    目录 SpringBoot整合junit SpringBoot整合junit SpringBoot整合junit的classes SpringBoot整合Mybatis 整合前的准备 整合Mybatis SpringBoot 整合druid 配置前置知识小点 整合druid SpringBoot整合junit SpringBoot整合junit ①还是一样,我们首先创建一个SpringBoot模块. 由于我们并不测试前端,而只是整合junit,所以不用选择模板,选择其中的web即可. 完成以后我

  • SpringBoot整合阿里云视频点播的过程详解

    目录 1.准备工作 2.服务端SDK的使用 2.1 导入依赖 2.2 初始化类 2.3 创建读取公共常量的工具类 2.4 获取视频播放地址 2.5 获取视频播放凭证 2.6 上传视频到阿里云视频点播服务 3.springboot项目中实践 3.1 上传视频到阿里云 3.2 根据视频id删除视频 1.准备工作 首先需要在阿里云开通视频点播服务: 1.首先,进入到阿里云视频点播平台,点击开通服务,选择按使用流量计费即可 2.开通之后点击进入管理控制台即可 视频点播有什么用? 视频点播(ApsaraV

  • springboot整合mongodb并实现crud步骤详解

    整合 首先我们得使用springboot整合咱们的mongodb,第一步,当然是引入依赖啦 <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </depende

随机推荐