【MQ篇】Spring Boot 整合 RocketMQ 消息队列

本文介绍了如何在SpringBoot应用中集成RocketMQ,从添加依赖、配置、编写生产者和消费者,到创建发送消息的接口,详细展示了整个过程。通过示例代码,演示了消息的生产和消费,并提醒在使用MQ后可能遇到的消息去重、重复消费等问题,暗示后续将探讨解决方案。
摘要由CSDN通过智能技术生成

写在最前

Spring Boot 整合 RocketMQ

Demo 地址:mingyue-springboot-rocketmq

1.添加依赖

<dependency> 
  <groupId>org.apache.rocketmq</groupId> 
  <artifactId>rocketmq-spring-boot-starter</artifactId> 
  <version>2.2.0</version> 
</dependency> 

2.修改配置文件

rocketmq:
  nameServer: 127.0.0.1:9876
  producer:
    group: mingyue-springboot

3.编写生产者

import lombok.RequiredArgsConstructor;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.stereotype.Service;

/**
 * 生产者
 *
 * @author Strive
 * @date 2022/4/24 17:07
 * @description
 */
@RequiredArgsConstructor
@Service
public class ProducerService {
  private final RocketMQTemplate rocketMQTemplate;

  /**
   * 发送消息
   *
   * @param message 消息体
   */
  public void send(String message) {
    /** 指定发送 mingyue-topic */
    rocketMQTemplate.convertAndSend("mingyue-topic", message);
  }
}

4.编写消费者

/**
 * 消费者
 *
 * @author Strive
 */
@Slf4j
@RocketMQMessageListener(topic = "mingyue-topic", consumerGroup = "mingyue-consumer-group")
@Component
public class ConsumerListener implements RocketMQListener<String> {

  @Override
  public void onMessage(String s) {
    log.info("接受到【mingyue-topic】信息:{}", s);
  }
}

5.编写接口

import com.csp.mingyue.rocketmq.service.ProducerService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 生产消息,消费消息
 *
 * @author Strive
 * @date 2022/4/24 17:12
 * @description
 */
@RestController
@RequestMapping("/producer")
@RequiredArgsConstructor
public class ProducerController {

  private final ProducerService producerService;

  @GetMapping("/send")
  public String send(String msg) {
    producerService.send(msg);

    return "success";
  }
}

启动项目,测试接口

http://localhost:8080/producer/send?msg=SpringBoot整合RocketMQ消息队列

2022-04-24 20:23:12.054  INFO 8740 --- [MessageThread_1] c.c.m.r.listener.ConsumerListener        : 接受到【mingyue-topic】信息:SpringBoot整合RocketMQ消息队列

6.查看控制台

访问 RocketMq 控制台:127.0.0.1:8080

  • 生产者

    image-20220424202704492

  • 消费者

    image-20220424202840228

小结

MQ 的水可太深了,但你用了 MQ 之后,除非你的消息不重要,不然你就要考虑如何解决如下问题:

  • 消息去重:如何业务端逻辑保持幂等性;
  • 消息重复:如何避免消息重复产生或重复消费;
  • 消息的可用性:如何在集群模式下保证消息的存储和复制;
  • 。。。

后续文章会把这些挖的坑填上~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Strive_MY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值