SpringBoot整合RocketMq

本文介绍了如何在SpringBoot项目中整合RocketMQ,包括RocketMQ的基础知识、选型对比,以及详细的整合步骤,如引入依赖、配置类编写、消费端配置等。通过这些步骤,开发者可以快速实现消息的收发,并支持可扩展的配置。同时,文章提到了RocketMQ的集群和广播消费模式,以及防止消息丢失的策略。
摘要由CSDN通过智能技术生成

createTime:4/23 version:0.0.1

updateTime:5/27 version:0.1.1(新增集群消费广播消费的概念)

RocketMq介绍说明(选型、对比)

https://www.jianshu.com/p/2838890f3284

个人对rocketMQ的简单认识

1.rocketMQ topic需要手动创建后才可以使用

2.rocketMQ有个组的概念,根据groupName接收消息,同一个groupName的消息处理完成之后被消费,不同的组名可同步消费同一个消息(集群消费模式)

3.rocketMQ可以在接收消息的同时判断消息是否被重复消费,可根据消息重试次数来进行相应处理

4.rocketMQ在防止消息丢失方面通过ConsumeConcurrentlyStatus.CONSUME_SUCCESS枚举确当被消费,只有返回此枚举值才确定消息被消费,否则会重新发送。

(补充知识点:集群消费模式、广播消费模式)在配置类中配置

集群消费:相当于点对点,groupName 一致时消费端只有一个会收到消息

广播消费:即使groupname一致,也会都收到消息

整合步骤(一步到位,支持可扩展的配置)

1.引入依赖

        <dependency>
            <groupId>com.alibaba.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>3.2.6</version>
        </dependency>

2.编写rocketMQ配置类

package com.jmall.iot.config;

import com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer;

import com.alibaba.rocketmq.common.consumer.ConsumeFromWhere;
import com.jmall.iot.rocketMQ.MessageListenerImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;

import java.util.Date;

/**
 * @author liujichang
 * @description: RocketMQ消费端配置类
 * @date 2019/3/18
 */
@Configuration
public class MQConsumerConfiguration {
    public static final Logger logger = LoggerFactory.getLogger(MQConsumerConfiguration.class);

    @Value("${rocketmq.consumer.namesrvAddr}")
    private String namesrvAddr;
    @Value("${rocketmq.consumer.groupName}")
    private String groupName;
    @Value("${rocketmq.consumer.consumeThreadMin}")
    private int consumeThreadMin;
    @Value("${rocketmq.consumer.consumeThreadMax}")
    private int consumeThreadMax;
    @Value("${rocketmq.consumer.topics}")
    private String topics;
    @Value("${rocketmq.consumer.consumeMessageBatchMaxSize}")
    private int consumeMessageBatchMaxSize;

    @Autowired
    private MessageListenerImpl mqMessageListenerProcessor;


    @Bean
    public DefaultMQPushConsumer getRocketMQConsumer() {
        if(StringUtils.isEmpty(groupName)){
            throw new RuntimeException("groupName 为空");
        }

        if(StringUtils.isEmpty(namesrvAddr)){
            throw new RuntimeException("namesrvAddr 为空");
        }

        if(StringUtils.isEmpty(topics)){
            throw new RuntimeException("topics 为空");
        }

        if(StringUtils.isEmpty(consumeThreadMin)){
            throw new RuntimeException("consumeThreadMin 为空");
        }

        if(StringUtils.isEmpty(consumeThreadMax)){
            throw new RuntimeException("consumeThreadMax 为空");
        }

        if(StringUtils.isEmpty(consumeMessageBatchMaxSize)){
            throw new RuntimeException("consumeMessageBatchMaxSize 为空");
        }
        //TODO 测试
Spring Boot是一个用于构建独立的、基于生产的Java应用程序的框架,而RocketMQ是一个开源的分布式消息队列。将Spring Boot整合RocketMQ可以实现在应用程序中使用RocketMQ进行消息的发送和接收。 要在Spring Boot中整合RocketMQ,首先需要在pom.xml文件中添加RocketMQ的依赖。可以使用如下代码添加依赖: ```xml <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>${rocketmq.version}</version> </dependency> ``` 其中,`${rocketmq.version}`是RocketMQ的版本号,可以根据实际情况进行设置。接下来,需要在application.yml配置文件中进行相关配置,包括RocketMQ的地址、消费者和生产者的配置等。 在代码中,可以使用`@RocketMQMessageListener`注解来标记RocketMQ的消息监听器,使用`@RocketMQListener`注解来指定监听的消息主题和标签。同时,也可以使用`@Slf4j`注解来引入日志记录器。 然后,可以创建相应的消费者和生产者服务类,分别实现RocketMQ的消费者和生产者接口。消费者服务类需要实现`RocketMQListener`接口,并实现其`onMessage`方法来处理接收到的消息。生产者服务类可以使用RocketMQ的`RocketMQTemplate`类来发送消息。 最后,可以在控制器中调用消费者和生产者的服务类来实现消息的发送和接收。 这样,就完成了Spring Boot与RocketMQ整合。通过整合,可以方便地在Spring Boot应用程序中使用RocketMQ进行消息的传递和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [RocketMQ整合SpringBoot](https://blog.csdn.net/weixin_47638656/article/details/113849725)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值