首页 > 其他分享 >RocketMQ集成SpringBoot

RocketMQ集成SpringBoot

时间:2024-04-16 18:22:24浏览次数:19  
标签:集成 SpringBoot producer send rocketMqTemplate private RocketMQ public rocketmq

踩了3天的坑,发现使用rocketMQTemplte消费者一直注册不上,发现是springboot版本问题

1.版本选择

经过不严格测试发现
rocketmq-spring-boot-starter 2.3.0 支持 springboot3以上
rocketmq-spring-boot-starter 2.2.x 只能使用3以下,高版本会导致消费者注册不上的问题

2.application.yml

rocketmq:
  name-server: 127.0.0.1:9876
  # 生产者
  producer:
    group: myProducer
    # 消息发送超时时间
    send-message-timeout: 3000
    # 消息最大长度4M
    max-message-size: 4096
    # 消息发送失败重试次数
    retry-times-when-send-failed: 3
    # 异步消息发送失败重试次数
    retry-times-when-send-async-failed: 2
  # 消费者
  consumer:
    group: myConsumer
    # 每次提取的最大消息数

3.配置类

@Configuration
public class RocketMqConfig {

    @Value("${rocketmq.name-server}")
    private String nameServer;

    @Value("${rocketmq.producer.group}")
    private String producerGroup;

    @Value("${rocketmq.producer.send-message-timeout}")
    private Integer sendMsgTimeout;

    @Value("${rocketmq.producer.max-message-size}")
    private Integer maxMessageSize;

    @Value("${rocketmq.producer.retry-times-when-send-failed}")
    private Integer retryTimesWhenSendFailed ;

    @Value("${rocketmq.producer.retry-times-when-send-async-failed}")
    private Integer retryTimesWhenSendAsyncFailed ;

    @Bean
    public RocketMQTemplate rocketMqTemplate(){
        RocketMQTemplate rocketMqTemplate = new RocketMQTemplate();
        rocketMqTemplate.setProducer(defaultMqProducer());
        return rocketMqTemplate;
    }

    @Bean
    public DefaultMQProducer defaultMqProducer() {
        DefaultMQProducer producer = new DefaultMQProducer();
        producer.setNamesrvAddr(this.nameServer);
        producer.setProducerGroup(this.producerGroup);
        producer.setSendMsgTimeout(this.sendMsgTimeout);
        producer.setMaxMessageSize(this.maxMessageSize);
        producer.setRetryTimesWhenSendFailed(this.retryTimesWhenSendFailed);
        producer.setRetryTimesWhenSendAsyncFailed(this.retryTimesWhenSendAsyncFailed);
        return producer;
    }
}

4.生产者

@Component
public class OrderSaveProducer {

    @Autowired
    private RocketMQTemplate rocketMqTemplate;

    public String sendSaveOrder() throws Exception {
        SendResult sendResult =  rocketMqTemplate.syncSend("saveOrderTopic",json);
        return sendResult.getMsgId();
    }
}

5.消费者

@Component
@RocketMQMessageListener(consumerGroup = ("saveOrderConsumer"), topic = ("saveOrderTopic"))
public class OrderSaveConsumer implements RocketMQListener<MessageExt> {
    @Override
    public void onMessage(MessageExt messageExt) {
        try{
            // 获取消息
            byte[] body = messageExt.getBody();
            OrderInfo orderInfo = JSON.parseObject(new String(body), OrderInfo.class);
            System.out.println(orderInfo);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

标签:集成,SpringBoot,producer,send,rocketMqTemplate,private,RocketMQ,public,rocketmq
From: https://www.cnblogs.com/lwx11111/p/18138898

相关文章

  • 80、SpringBoot3 SpringSecurity Mybatisplus最新版 整合 实现登入权限控制
    1、导入pom依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apac......
  • SpringBoot+MybatisPlus 增删改查学习第三章 (C#转JAVA)
    packagecom.example.demo;importcom.baomidou.mybatisplus.core.conditions.query.QueryWrapper;importcom.example.demo.entity.Person;importcom.example.demo.mapper.PersonMapper;importcom.example.demo.service.PersonService;importorg.junit.jupiter.api.Test;i......
  • 面试官:一个 SpringBoot 项目能处理多少请求?(小心有坑)
    面试官:一个SpringBoot项目能处理多少请求?(小心有坑) 你好呀,我是歪歪。这篇文章带大家盘一个读者遇到的面试题哈。根据读者转述,面试官的原问题就是:一个SpringBoot项目能同时处理多少请求?不知道你听到这个问题之后的第一反应是什么。我大概知道他要问的是哪个方向,但......
  • Scratch3之AI集成 - flappy bird AI版本
    AI神秘且有趣,我们一个经典的游戏flappybird集成AI,实现自训练成长的聪明的笨鸟。先上效果:初始化的笨鸟拥有分身,每个分身都有自我学习功能,根据自己的移动轨迹和得分情况进行汇总,进行新一代的笨鸟的迭代,基本经过数十轮的训练和迭代,能完成高智慧的笨鸟,自我闯关能力强。 需要了解......
  • RocketMQ 事件驱动:云时代的事件驱动有啥不同?
    作者:林清山(隆基)前言:从初代开源消息队列崛起,到PC互联网、移动互联网爆发式发展,再到如今IoT、云计算、云原生引领了新的技术趋势,消息中间件的发展已经走过了30多个年头。目前,消息中间件在国内许多行业的关键应用中扮演着至关重要的角色。随着数字化转型的深入,客户在使用消息......
  • java连接ssmsSqlserver数据库 报错信息:com.microsoft.sqlserver.jdbc.SQLServerExce
    解决办法:将官网下载的驱动文件打开,找到如下路径,并复制,粘贴放到jdk的bin目录下......
  • 盈致MES系统:功能模块的集成与协同工作
    盈致MES系统是一款专业的制造执行系统,具有丰富的功能模块,以实现全面的生产管理解决方案。根据不同企业的实际需求,盈致MES系统通常包括以下功能模块: 计划排程模块:负责根据市场需求、库存、设备能力等因素,制定生产计划和排程,以保证生产计划的可行性和高效性。物料管理模块:负责......
  • springboot多数据源配置
    由于我们系统旧环境没有用springboot自带的多数据源功能,使用了自己配置的多数据源。添加自定义数据源注解@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public@interfaceDynDatasource{Modulevalue()defaultModule.DEF;}注解......
  • SpringBoot+Redis启动报错Unsatisfied dependency expressed through method 'stringR
    SpringBoot+Redis启动报错Applicationrunfailedorg.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'redisTool':Unsatisfieddependencyexpressedthroughfield'stringRedisTemplate';nestedexcep......
  • 微服务,SpringBoot开发
    1.微服务特点:每个功能元素的服务都是一个可以替换的可独立升级的软件代码。缺点:给部署和运维提供了难度模块化,功能化用户,支付,签到,用户多,要管理负载均衡问题整体项目模块化,动态分配资源微服务问题?网络不可靠,需要解决这4个问题,万变不离其宗,一通百通服务多,客户端如何访问?--......