SpringBoot简单集成RocketMQ

文章介绍了如何在SpringBoot应用中使用RocketMQ进行消息生产和消费。生产者通过添加依赖、注入RocketMQTemplate来发送消息,并提供了发送回调处理。消费者端同样依赖于RocketMQ,定义了消息监听器,以广播模式消费course-topic主题下的消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生产者

  1. 导入依赖

<dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-spring-boot-starter</artifactId>
        <version>2.0.4</version>
    </dependency>
  1. 注入

@Resource
private RocketMQTemplate mqTemplate;
  1. 发送消息

   private void sengMessageToMQ(CourseDocumentDTO2 documentDto) {
        String str= JSON.toJSONString(documentDto);
        mqTemplate.asyncSend("course-topic:online-tags",
                             //course-topic 主题
                             //online-tags 二级标签
                MessageBuilder.withPayload(str).build(),
                new SendCallback() {
                    @Override
                    public void onSuccess(SendResult sendResult) {
                        log.info("消息发送成功");
                    }

                    @Override
                    public void onException(Throwable throwable) {
                            throwable.printStackTrace();
                            log.info("消息发送失败"+str);
                    }
                });
    }

消费者

  1. 导入依赖

 <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>
  1. 类注解

@RocketMQMessageListener(consumerGroup = "consumer-course-group", 
                         topic = "course-topic",   //主题
                         selectorExpression = "*",  // 二级标签
                         messageModel = MessageModel.BROADCASTING)   // 集群模式
@Component   //交给spring
  1. 消费消息

public class CourseMQListener implements RocketMQListener<MessageExt> {
       @Override
    public void onMessage(MessageExt messageExt) {
        try {
            String msg = new String(messageExt.getBody(), "utf-8");
            CourseDocumentDTO2 courseDocumentDTO = JSON.parseObject(msg, CourseDocumentDTO2.class);

            String smsAge = String.format(message, courseDocumentDTO.getId(),
                    courseDocumentDTO.getName());
            //在此定义消费具体实现
            log.info("消费消息");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
    }
}

配置application.yml

rocketmq:
  name-server: 127.0.0.1:9876
  #生产者配置
  producer:
    #生产者组名字
    group: "course-producer"
    # 消息最大长度 默认 1024 * 4 (4M)
    max-message-size: 4096
    # 发送消息超时时间,默认 3000
    send-message-timeout: 3000
    # 发送消息失败重试次数,默认2
    retry-times-when-send-failed: 2
    retry-times-when-send-async-failed: 2

各位伙伴有啥问题记得留言哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值