RocketMQ中概念知识点记录 和 与SpringBoot集成实现发送 同步、异步、延时、批量、tag、key、事务消息等

1. 消息模型

  • 消息(Message): 是 RocketMQ 中数据传输的基本单位,由主题、标签、键值、消息体等组成。
  • 主题(Topic): 消息的分类,类似于邮件的主题,用于对消息进行粗粒度的分类。
  • 标签(Tag): 对消息进一步细分的标识,可以理解为消息的子类别
  • 键(Key): 用于消息的精确路由或在某些场景下作为消息的唯一标识

2. 生产者(Producer)

  • 普通消息发送:

    • 同步发送:发送消息后等待响应,确认消息是否发送成功。
    • 异步发送:发送消息后不等待响应,通过回调函数处理结果。
    • 单向发送:只发送消息,不关心发送结果
  • 事务消息:

    • 用于保证消息发送与本地事务的一致性,需要在事务执行成功后显式提交或回滚消息。

3. 消费者(Consumer)

  • 拉取模式(Pull): 消费者主动从 Broker 拉取消息。
  • 推送模式(Push): Broker 主动将消息推送给消费者,这是 RocketMQ 默认的消费方式。

4. 消息消费类型

  • 集群消费(Cluster Consuming): 每条消息只会被集群中的一个消费者消费,适用于消息需要被处理一次的情况。
  • 广播消费(Broadcast Consuming): 每条消息会被所有订阅该 Topic 的消费者消费,适用于消息需要被所有相关节点处理的情况。

5. 顺序消息

  • 全局顺序消息:
    • 消息按照发送顺序消费,适用于对消息顺序有严格要求的场景,但性能较低。
  • 分区顺序消息:
    • 在同一个消息队列中消息按顺序消费,不同队列间的消息消费顺序无法保证。
      实现原理:将某些消息,按一定规则,发到同一个队列中

6. 消费重试与死信队列

  • 当消息消费失败时,RocketMQ 会自动重新投递消息给消费者尝试再次消费。
  • 如果消息多次消费失败,可以配置消息进入死信队列,以便后续人工干预。

7. 延迟消息

  • 允许设置消息的延迟等级,控制消息在指定时间后才可被消费。

8. 消息过滤

  • Tag过滤:
    • 消费者可以根据消息的标签进行过滤,只消费特定标签的消息。
  • SQL92过滤:
    • 提供更复杂的过滤逻辑,允许根据消息属性进行条件匹配。

9. 消息堆积

  • 当消费者消费速度慢于生产者发送速度时,会出现消息堆积,可能需要增加消费者实例数来提高消费能力。

10. 监控与管理

  • RocketMQ 提供了丰富的监控指标,包括消息发送成功率、延迟、消费速率等,便于运维人员监控系统健康状态。



代码示例:


链接: https://pan.baidu.com/s/1QK_YXo0GceYyN6E4JMnSmA 提取码: gcew

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zookeeper是什么,为什么要用,怎么用?

关于Zookeeper的全面了解与应用 前言:这几天在开发过程中,遇到了zk相关的一些问题,大体先复习下 Zookeeper作为分布式系统中的协调服务,起着至关重要的角色。本篇文章将从以下几个方面详细讲解什么是Zookeeper,为什么…

【Go系列】RPC和grpc

承上启下 介绍完了Go怎么实现RESTFul api,不可避免的,今天必须得整一下rpc这个概念。rpc是什么呢,很多人都想把rpc和http一起对比,但是他们不是一个概念。RPC是一种思想,可以基于tcp,可以基于udp也可以基于…

【STM32嵌入式系统设计与开发---拓展】——1_10矩阵按键

这里写目录标题 1、矩阵按键2、代码片段分析 1、矩阵按键 通过将4x4矩阵按键的每一行依次设为低电平,同时保持其它行为高电平,然后读取所有列的电平状态,可以检测到哪个按键被按下。如果某列变为低电平,说明对应行和列的按键被按下…

Android焦点之FocusWindow切换流程

关键调用是setInputWindows InputDispatcher::dispatchFocusLocked:在这里打印日志"Focus entering" 或 "Focus leaving" SurfaceFlinger::updateInputFlingernotifyWindowInfos();mWindowInfosListenerInvoker->windowInfosChanged(windo…

深度学习落地实战:识别火车票信息

前言 大家好,我是机长 本专栏将持续收集整理市场上深度学习的相关项目,旨在为准备从事深度学习工作或相关科研活动的伙伴,储备、提升更多的实际开发经验,每个项目实例都可作为实际开发项目写入简历,且都附带完整的代码与数据集。可通过百度云盘进行获取,实现开箱即用 …

高阶面试-hw算法整理

坚持最近一个星期把每道题搞熟悉 文章目录 1154一年中的第几天[125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/)[344. 反转字符串](https://leetcode.cn/problems/reverse-string/)[20. 有效的括号](https://leetcode.cn/problems/valid-parentheses/)[392.…

【Java】详解抽象类和接口的区别

一、抽象类和接口的主要区别表格 特性抽象类接口声明关键字abstractinterface声明访问修饰符public、protected、default(不能用private)public、default继承关键字extendsimplements变量跟普通类一样,可以包含实例变量、静态变量等 只能包含…

excel表怎么增乱序单词表 和正序单词表四六级要来了?!Excel帮你构建自己的单词库

excel表怎么增乱序单词表 和正序单词表四六级要来了?!Excel帮你构建自己的单词库 1.背单词的第一步,当然是先上网找电子版的单词集。 盘搜搜 2. 建立 xls 格式的表格 3. 把下载的单词数据 复制到 表格 粘贴 4.新建一列 辅助列 生成随机数来…

murmurhash3算法的go语言实现

MurmurHash的定义 MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作。由Austin Appleby在2008年发明,并出现了多个变种,都已经发布到了公有领域(public domain)。与其它流行的哈希函数相比,对于规律性较强的key&…

网络编程-TCP/IP

网络概述 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。 每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务 网络体系结构…

SpringMVC注解全解析:构建高效Web应用的终极指南 (上)

SpringMVC 是一个强大的 Web 框架,广泛应用于 Java Web 开发中。它通过注解简化了配置,增强了代码的可读性。本文将全面解析 SpringMVC 中常用的注解及其用法,帮助你构建高效的 Web 应用。 一. MVC介绍 MVC 是 Model View Controller 的缩写…

数字通云平台 智慧政务OA PayslipUser SQL注入漏洞复现

0x01 产品简介 数字通云平台智慧政务OA产品是基于云计算、大数据、人工智能等先进技术,为政府部门量身定制的智能化办公系统。该系统旨在提高政府部门的办公效率、协同能力和信息资源共享水平,推动电子政务向更高层次发展。 0x02 漏洞概述 数字通云平台 智慧政务OA Paysli…

在vue2中引入一个js文件, 在模版中不能使用js中的变量解决

在 Vue 2 中,如果你引入一个 JavaScript 文件,并希望在模板中使用该文件中的变量,通常有几个常见的问题和解决方法: 1. 作用域问题 在 Vue 模板中,只能访问到 Vue 实例中的数据和方法,而无法直接访问外部…

使用百度语音技术实现文字转语音

使用百度语音技术实现文字转语音 SpringBootVue前后端分离项目 调用api接口需要使用AK和SK生成AccessToken,生成getAccessToken的接口有跨域限制,所以统一的由后端处理了 部分参数在控制台->语音技术->在线调试里面能找到 Controller RestController RequestMapping(&q…

差分进化(Differential Evolution)算法

一、差分进化(Differential Evolution)算法的起源 差分进化算法(DE)是一种基于群体的进化算法,由Rainer Storn和Kenneth Price在1995年提出。它是一种全局优化算法,适用于处理多种优化问题,包括…

PostgreSQL的引号、数据类型转换和数据类型

一、单引号和双引号(重要): 1、在mysql没啥区别 2、在pgsql中,实际字符串用单引号,双引号相当于mysql的,用来包含关键字; -- 单引号,表示user_name的字符串实际值 insert into t_user(user_nam…

浏览器跨tab页面通信方式总结

需求: 浏览器不同 tab 标签页之间是独立的, 如果要通信必须通过特殊手段来实现跨标签页通信。 1.StorageEvent 事件 当一个标签页 localStorage 变化时(sessionStorage 无效),同源下另一个或其他所有标签页使用 DO…

python多级表头汇总

需求:将图一的数据展示为图二样式 图一: 图二: 图一具体的Excel截图 图二具体样式 python解决办法: # 导入 pandas 库,用于数据处理 import pandas as pd# 加载 Excel 文件 file_path 多级表头读取实例.xl…

科研绘图系列:R语言circos图(circos plot)

介绍 Circos图是一种数据可视化工具,它以圆形布局展示数据,通常用于显示数据之间的关系和模式。这种图表特别适合于展示分层数据或网络关系。Circos图的一些关键特点包括: 圆形布局:数据被组织在一个或多个同心圆中,每个圆可以代表不同的数据维度或层次。扇区:每个圆被划…

【BUG】已解决:SyntaxError invalid syntax

SyntaxError invalid syntax 目录 SyntaxError invalid syntax 【常见模块错误】 错误原因: 解决办法: 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于…