RocketMQ笔记

news/2025/2/19 9:11:00/

科普:

  • 把数据放到消息队列叫做生产者
  • 从消息队列里边取数据叫做消费者

 

一、为什么要用消息队列?

消息队列主要有三大用途 :解耦、异步、削峰,是消息队列最主要的三大作用。

 

 二、为什么选择RocketMQ

选择中间件的可以从这些维度来考虑:可靠性,性能,功能,可运维行,可拓展性,社区活跃度。目前常用的几个中间件,ActiveMQ作为“老古董”,市面上用的已经不多,其它几种:

  • RabbitMQ:

  • 优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置

  • 缺点:性能和吞吐量不太理想,不易进行二次开发

  • RocketMQ:

  • 优点:性能好,高吞吐量,稳定可靠,有活跃的中文社区

  • 缺点:兼容性上不是太好

  • Kafka:

  • 优点:拥有强大的性能及吞吐量,兼容性很好

  • 缺点:由于“攒一波再处理”导致延迟比较高

我们的系统是面向用户的C端系统,具有一定的并发量,对性能也有比较高的要求,所以选择了低延迟、吞吐量比较高,可用性比较好的RocketMQ。

三.RocketMQ有什么优缺点?

RocketMQ优点:

  • 单机吞吐量:十万级

  • 可用性:非常高,分布式架构

  • 消息可靠性:经过参数优化配置,消息可以做到0丢失

  • 功能支持:MQ功能较为完善,还是分布式的,扩展性好

  • 支持10亿级别的消息堆积,不会因为堆积导致性能下降

  • 源码是Java,方便结合公司自己的业务二次开发

  • 天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况

  • RoketMQ在稳定性上可能更值得信赖,这些业务场景在阿里双11已经经历了多次考验,如果你的业务有上述并发场景,建议可以选择RocketMQ

RocketMQ缺点:

  • 支持的客户端语言不多,目前是Java及c++,其中c++不成熟

  • 没有在 MQ核心中去实现JMS等接口,有些系统要迁移需要修改大量代码


http://www.ppmy.cn/news/1185934.html

相关文章

一共就五个名额,三个全给一个人?我表示不理解

我对csdn举办的#你写过的最蠢的代码是/这个话题的活动表示质疑!!!! 先来看看评选规则: 再来看看评分标准: 接下来看看获奖选手: 这三人有啥区别?

springboot项目通过自定义注解+aop实现对入参加解密

1.创建自定义注解: Target({ElementType.FIELD, ElementType.PARAMETER}) Retention(RetentionPolicy.RUNTIME) public interface EncryptDecrypt { }2.创建加解密工具类: public class EncryptionUtils {// 加密方法public static String encrypt(Str…

【文件存储服务器】Minio使用

文章目录 2.2 Minio使用2.2.1 Minio介绍2.2.2 Minio安装Windows安装Linux安装 2.2.3 Minio入门 2.3 上传文件接口2.3.1 FileUploadController2.3.2 FileUploadService2.3.3 MinioProperties2.3.4 配置文件内容2.3.5 主启动类加上EnableConfigurationProperties 2.4 前端对接 2.…

基于Java8的CompletableFuture实现的异步执行工具类

异步执行工具类 前言 基于Java8的CompletableFuture实现的异步执行工具类 package com.jareny.jave.design.thread;import lombok.extern.slf4j.Slf4j; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; import j…

python引用计数

#python 垃圾回收算法 1、引用计数 2、标记-清除 3、分代收集import sysa[1,2,3] # print(dir(a)) ba ca da print(id(a),id(b)) print(id(c),id(d)) #sys.getrescount()可以获得对象的引用计数 print(sys.getrefcount(a)-1) print(sys.getrefcount(b)-1) a[1,2,3,4] print(sys…

蓝凌EIS智慧协同平台saveImg接口存在任意文件上传漏洞

蓝凌EIS智慧协同平台saveImg接口存在任意文件上传漏洞 一、蓝凌EIS简介二、漏洞描述三、影响版本四、fofa查询语句五、漏洞复现六、深度复现1、发送如花2、哥斯拉直连 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者…

memcmp内存比较函数

1.头文件:string.h 2.函数原型:int memcmp(const void *ptr1, const void *ptr2, size_t num) 3.函数功能:比较两块内存中数据的大小 4.参数解释: 比较 ptr1 和 ptr2 两个指针所指向的两块内存中的前 num 个字节 5.返回值&am…

轻量封装WebGPU渲染系统示例<5>-多重纹理(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/version-1.01/src/voxgpu/sample/MultiTexturedCube.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 2. 高频调用与低频调用隔离。 3. 面向用户的易用性封装。 4. 渲染数据和渲染机制分离。 …