【Spring Boot实战与进阶】集成RockerMQ消息队列

2023-02-10 08:58:58 浏览数 (2)

汇总目录链接:【Spring Boot实战与进阶】学习目录

文章目录
  • 一、简介
  • 二、集成RockerMQ消息队列
    • 1、引入依赖
    • 2、配置文件
    • 3、测试生产消息
    • 4、测试消费消息

一、简介

   RocketMQ 是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于2017年9月25日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和高可靠等特性近年来已经也被越来越多的企业使用。

为什么选择RocketMQ?   在阿里孕育 RocketMQ 的雏形时期,我们将其用于异步通信、搜索、社交网络活动流、数据管道,贸易流程中。随着我们的贸易业务吞吐量的上升,源自我们的消息传递集群的压力也变得紧迫。   根据我们的研究,随着队列和虚拟主题使用的增加,ActiveMQ IO模块达到了一个瓶颈。我们尽力通过节流、断路器或降级来解决这个问题,但效果并不理想。于是我们尝试了流行的消息传递解决方案Kafka。不幸的是,Kafka不能满足我们的要求,其尤其表现在低延迟和高可靠性方面,详见这里。在这种情况下,我们决定发明一个新的消息传递引擎来处理更广泛的消息用例,覆盖从传统的pub/sub场景到高容量的实时零误差的交易系统。   Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景。

二、集成RockerMQ消息队列

1、引入依赖

代码语言:javascript复制
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

2、配置文件

代码语言:javascript复制
rocketmq:
  name-server: 192.168.60.123:9876
  producer:
    group: test
    send-message-timeout: 30000

3、测试生产消息

代码语言:javascript复制
@SpringBootTest
class ScriptApplicationTests {
    @Resource
    private RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
        rocketMQTemplate.send("test_topic", MessageBuilder.withPayload("这是一条消息").build());
        rocketMQTemplate.send("test_topic", MessageBuilder.withPayload(MapUtil.of("1", "test")).build());
    }
}

4、测试消费消息

代码语言:javascript复制
@Slf4j
@Component
@RocketMQMessageListener(topic = "test_topic", consumerGroup = "test")
public class RocketMQConsumer implements RocketMQListener<String> {

    @Override
    public void onMessage(String message) {
        log.info("接受到消息: {}", message);
    }
}

控制台输出:

0 人点赞