首页 > 其他分享 >RocketMQ

RocketMQ

时间:2025-01-14 09:28:43浏览次数:3  
标签:springframework Kafka 消息 import org RocketMQ

目录

一、什么是RocketMQ

主要特点:

应用场景:

二、RocketMQ的使用

添加依赖

配置RocketMQ

创建生产者服务

创建消费者监听器

编写测试Controller

启动Spring Boot应用

三、RocketMQ与Kafka的异同

相似点

不同点


一、什么是RocketMQ

RocketMQ 是一款分布式消息中间件,最初由阿里巴巴集团开发,并于2012年开源。它在2017年成为了Apache软件基金会的顶级项目。RocketMQ设计用于满足互联网分布式架构的需求,特别是在处理海量消息时提供高效、稳定的服务。

主要特点:

  • 高吞吐量:RocketMQ能够支持每秒数万条至数十万条的消息发送和接收。

  • 低延迟:优化了消息传输机制,确保即使在高负载下也能实现低延迟的消息传递。

  • 可靠性:通过持久化存储、主从复制等机制保证消息不丢失,确保服务的高可用性。

  • 可扩展性:设计上易于水平扩展,以适应业务增长的需求。

  • 灵活性:提供了多种消息模型,包括点对点、发布/订阅模式,以及顺序消息、事务消息等功能。

应用场景:

  • 异步通信:将原本同步的操作转换为异步处理,提高系统响应速度。

  • 削峰填谷:在网络购物节等流量高峰期,使用消息队列可以有效缓解数据库的压力。

  • 日志处理:作为大规模分布式日志收集和处理的解决方案。

  • 事件驱动架构:构建基于事件驱动的应用程序和服务。

二、RocketMQ的使用

添加依赖

首先,在你的pom.xml文件中添加必要的依赖项:

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- RocketMQ Spring Boot Starter -->
    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-spring-boot-starter</artifactId>
        <version>2.2.1</version> <!-- 确保选择适合的版本 -->
    </dependency>
</dependencies>

配置RocketMQ

application.propertiesapplication.yml中配置RocketMQ的相关属性。这里以application.properties为例:

# RocketMQ NameServer地址
rocketmq.name-server=127.0.0.1:9876
# 生产者组名
rocketmq.producer.group=my-producer-group
# 消费者组名
rocketmq.consumer.group=my-consumer-group

创建生产者服务

创建一个服务类用于发送消息:

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class RocketMQProducerService {
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
    public void sendMessage(String topic, String message) {
        rocketMQTemplate.convertAndSend(topic, message);
        System.out.println("Sent Message: "message);
    }
}

创建消费者监听器

创建一个监听器类用于接收消息:

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;
@Service
@RocketMQMessageListener(topic = "test-topic", consumerGroup = "my-consumer-group")
public class RocketMQConsumerService implements RocketMQListener<String> {
    @Override
    public void onMessage(String message) {
        System.out.printf("Received Message: %s %n", message);
    }
}

编写测试Controller

为了方便测试,可以编写一个简单的Controller来调用生产者服务发送消息:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
    @Autowired
    private RocketMQProducerService producerService;
    @GetMapping("/send")
    public String sendMessage(@RequestParam String msg) {
        producerService.sendMessage("test-topic", msg);
        return "Message sent!";
    }
}

启动Spring Boot应用

确保RocketMQ的服务(NameServer和Broker)已经启动,并运行你的Spring Boot应用程序。你可以通过访问http://localhost:8080/send?msg=Hello_RocketMQ来发送一条消息,并观察控制台输出确认消息是否被成功消费。

三、RocketMQ与Kafka的异同

相似点

  • 高吞吐量:两者都设计为能够处理大规模的数据流,并且都能够提供非常高的消息吞吐量。

  • 持久化存储:两者都支持将消息持久化到磁盘,以确保即使发生故障也不会丢失数据。

  • 扩展性:两者都可以通过增加节点来实现水平扩展,从而支持更高的负载。

  • 顺序消息:都能保证特定条件下的消息顺序(如分区内的顺序)。

不同点

  • 存储模型:

    • Kafka使用基于日志结构的存储模型,消息按顺序追加到持久化日志文件中。

    • RocketMQ采用更类似于传统数据库的设计,将消息存储在逻辑表中。

  • 消息可靠性:

    • Kafka的消息可靠性依赖于副本机制,但可能无法完全保证消息不丢失。

    • RocketMQ通过重试等机制提高了消息保存的可靠性,并提供了同步刷盘功能,在单机可靠性上比Kafka更高。

  • 消息模式:

    • Kafka主要关注于高吞吐量场景,适用于大数据流处理。

    • RocketMQ提供了更多的消息模型,如顺序消息、延时消息和事务消息,适合需要高可靠性和复杂消息模式的应用。

  • 性能优化:

    • Kafka在高吞吐量场景下表现优异,特别适合需要大量数据快速传输的情况。

    • RocketMQ在高并发场景下有更好的表现,特别是在需要保证消息准确性的场景中。

  • API灵活性:

    • Kafka拥有丰富的客户端库,支持多种编程语言,便于集成不同的系统。

    • RocketMQ的API相对简单,但在某些高级特性上提供了更强的支持。

  • 社区和支持:

    • Kafka由Apache软件基金会维护,拥有广泛的社区支持和大量的第三方工具。

    • RocketMQ同样也是Apache顶级项目,但其社区规模和生态系统相对较小。

选择RocketMQ还是Kafka取决于具体的应用需求。如果应用需要处理海量的数据流并且对延迟要求不高,Kafka可能是更好的选择。而如果需要复杂的交易处理或严格的消息顺序和可靠性保证,RocketMQ则可能更适合。

标签:springframework,Kafka,消息,import,org,RocketMQ
From: https://blog.csdn.net/Lin_Miao_09/article/details/145127033

相关文章

  • RocketMQ工具的使用方法
    RocketMQ简介启动rocketmq-Dashboard项目输入http://localhost:8888/#/即可到rocketmq界面学习网页:https://blog.csdn.net/m0_46486963/article/details/124495728整体横向菜单分为八个部分:OPS(运维):主要是设置nameserver和配置vipchannelDashboard(驾驶舱):控制台的dash......
  • linux下启动第二个RocketMQ,报错java.lang.RuntimeException: Lock failed,MQ already
    报错如下图: 这种情况下启动两个broker,基本都会在第二个broker,报lockfailed,MQalreadystarted因为使用了相同的默认配置(只启动一个broker不受影响) 不同的配置,需求满足最基本的配置不同brokerName不同brokerId不同listenPort不同storePathRootDir......
  • MQTT和传统消息队列(RabbitMQ,RocketMQ,Kafka)的区别
    适用场景选择哪种协议取决于具体的应用需求。如果需要适用于大量传感器和控制设备之间的通信,且网络环境不稳定或需要节省带宽资源,MQTT是一个不错的选择。而如果需要在浏览器和服务端之间建立实时双向通信,且对实时性和双向交互有较高要求,WebSocket可能更加适合。   产......
  • 招行面试:RocketMQ、Kafka、RabbitMQ,如何选型?
    本文原文链接文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完......
  • docker部署RocketMQ.240108
    ​RocketMQ是阿里巴巴2016年MQ中间件,使用java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理亿万级别的消息处理。RocketMQ各角色介绍Producer:消息的发送者Consumer:消息的接收者Broker:暂存和传输消息,如:邮局NameServer:管理Bro......
  • RocketMQ原理简述(二)
    1.前言此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂这篇文章紧挨着上一篇博客来进行编写,有些不清楚的可以看下上一篇博客:RocketMQ相关原理简述-CSDN博客2.topic,messageQueue,broker  topic的创建的时候需要进行指定MessageQueue的数量,那么t......
  • RocketMQ消息存储概念篇
    一、引言消息存储作为RocketMQ最重要,最复杂的一个模块,理解和掌握好它的消息存储机制,对学习RocketMQ来说是至关重要的,接下来对于其中的核心理论知识先有一个了解。二、RocketMQ消息存储概述在了解下面的内容之前我们先来看一下消息存储整体的架构图:2.1消息存储文件构成Ro......
  • RocketMQ 消息顺序与事务机制详解
    目录一、简介二、RocketMQ架构概述三、RocketMQ消息流转过程四、RocketMQ消息顺序与事务五、RocketMQ高可用性与扩展性六、RocketMQ应用场景七、总结一、简介RocketMQ是一款高吞吐量、高可扩展性的分布式消息中间件,由阿里巴巴开源,并已成为Apache的顶级项目......
  • 消息中间件——rabbitmq,kafka,rocketmq
    目录mqmq解决什么问题rabbitmq工作原理消息路由如何保证消息不丢失实现高可用kafka能支持这么大吞吐量的原因如何保证消息不丢失避免重复消费如何保证消息顺序消费数据存储原理IRSleader选举rocketmq为什么不使用zookeeper分布式事务mqmessageQueue,消息......
  • C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
    作者:邹星宇、刘尧C5GAME:安全便捷,国内领先的游戏饰品交易平台C5GAME游戏饰品交易平台(www.c5game.com)是国内领先的STEAM游戏饰品交易的服务平台,专注于CS:GO以及DOTA2等热门游戏装备C2C中介交易。自网站上线以来,C5GAME凭借其安全便捷的交易和流畅友好的体验,迅速在玩家......