04、RocketMQ -- 核心基础使用

news2025/7/12 13:29:54

目录

  • 核心基础使用
    • 1、入门案例
      • 生产者
      • 消费者
    • 2、消息发送方式
      • 方式1:同步消息
      • 方式2:异步消息
      • 方式3:一次性消息
      • 管控台使用过程中可能出现的问题
    • 3、消息消费方式
      • 集群模式(默认)
      • 广播模式
    • 4、顺序消息
      • 分析图:
        • 代码实现:
          • 生产者代码:
          • 消费者代码:
          • Tag消息消费过滤
    • 5、延迟消息
      • 消费者代码:
      • 消费者代码:
      • 消息过滤
    • 6、Tag 标签过滤
      • 生产者:
      • 消费者:
    • 7、SQL92 过滤
      • 生产者代码:
      • 消费者代码:
      • 修改配置文件

核心基础使用

1、入门案例

生产者和消费者都需要用到同一个依赖

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.4.0</version>
</dependency>

生产者

在这里插入图片描述

控制台的消息

在这里插入图片描述

消费者

RocketMQ有push(推模式)和pull(拉模式)两种消费消息的模式,推模式就是Broker主动将消息推送给消费者,拉模式就是消费者主动从Broker将消息拉回来。推模式本质实际上是拉模式,是基于拉模式实现的

在这里插入图片描述
在这里插入图片描述

consumer启动之后,只要不关闭,一有消息就会被这个消费者消费

在这里插入图片描述

在这里插入图片描述

2、消息发送方式

方式1:同步消息

这种可靠性同步地发送方式使用的比较广泛,比如:重要的消息通知,短信通知。

消息中间件要保证消息不丢失,它里面有一个持久化机制的。

发来的消息默认存在内存中,但是如果消息中心宕机了,那么消息就全丢了。

所以这个消息中心里面有这样一个存储介质,消息中心最终会把消息存在【文件存储】里面,每个Broker Server 有自己的文件存储。

在这里插入图片描述

在这里插入图片描述

方式2:异步消息

异步消息通常用在对响应时间敏感的业务场景,即发送端不能容忍长时间地等待Broker的响应。

适合需要快速响应的场景,不过可靠性比同步消息差一点,因为是异步发送,所以业务逻辑继续往下走的时候,异步发送的消息可能会出现问题,这就是说它可靠性差点。

分析图:

在这里插入图片描述
在这里插入图片描述
示意图:

在这里插入图片描述

启动rocketmq之后发送异步消息成功。

在这里插入图片描述

方式3:一次性消息

性能更高,对丢失一两条数据无所谓的,适合日志场景

在这里插入图片描述
代码示意图

生产者

在这里插入图片描述
消费者

在这里插入图片描述

管控台使用过程中可能出现的问题

存到消息的时间是机器时间,然后隔天再打开查询,时间对不上

在这里插入图片描述
时间同步命令

用阿里的时间同步

在这里插入图片描述

3、消息消费方式

集群模式(默认)

集群模式:消息是分散消费的,分散到不同的消费者去消费的。

在这里插入图片描述
在这里插入图片描述

广播模式

在这里插入图片描述

在这里插入图片描述

4、顺序消息

分析图:

消费按照指定的顺序进行消费

rocketMQ本身就是多线程的,默认每个消费者的线程数为5个,每个消费者可以有n个线程来进行消费。

在这里插入图片描述

属于多线程消费

在这里插入图片描述

每一个topic默认有4个消息队列 MessageQueue,如图
在这里插入图片描述

顺序消费分析图:

在这里插入图片描述

代码实现:

在这里插入图片描述

生产者代码:

在这里插入图片描述
一些注解:

在这里插入图片描述

消费者代码:

在这里插入图片描述
在这里插入图片描述

Tag消息消费过滤

“*”号表示所有消息都要消费

在这里插入图片描述
在这里插入图片描述

想要看消息消费前和消费后的状态的区别,下图不确定是不是这么理解

在这里插入图片描述

注意点:

加这个的话,每次都会从头开始消费-----待确定功能

consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);

在这里插入图片描述

5、延迟消息

现在RocketMq并不支持任意时间的延时,需要设置几个固定的延时等级,

从1s到2h分别对应着等级1到18

“1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h”;

消费者代码:

主要是这里的消息调用个延迟发送消息的方法而已

在这里插入图片描述
在这里插入图片描述

消费者代码:

这里跟其他消费者代码没什么区别
在这里插入图片描述

在这里插入图片描述

消息过滤

6、Tag 标签过滤

在这里插入图片描述

在这里插入图片描述

生产者:

在这里插入图片描述

消费者:

在这里插入图片描述

7、SQL92 过滤

RocketMQ只定义了一些基本语法来支持这个特性。你也可以很容易地扩展它。

数值比较,比如:>,>=,<,<=,BETWEEN,=;
字符比较,比如:=,<>,IN;
IS NULL** 或者 IS NOT NULL;
逻辑符号 AND,OR,NOT;

常量支持类型为:

数值,比如:**123,3.1415;
字符,比如:‘abc’,必须用单引号包裹起来;
NULL,特殊的常量
布尔值,TRUE 或 FALSE

只有使用push模式的消费者才能用使用SQL92标准的sql语句,接口如下:
public void subscribe(finalString topic, final MessageSelector messageSelector)

注意: 在使用SQL过滤的时候, 需要配置参数enablePropertyFilter=true

在这里插入图片描述

生产者代码:

在这里插入图片描述

消费者代码:

在这里插入图片描述

修改配置文件

报错的原因是因为linux要修改下配置

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
enablePropertyFilter=true

在这里插入图片描述

:wq 保存退出

关闭和重新启动nameserver和broker

关闭nameserver:
sh mqshutdown namesrv

关闭broker
sh mqshutdown broker

1.启动NameServer
nohup sh mqnamesrv &

2.启动Broker
nohup sh mqbroker -n localhost:9876 -c /usr/local/rocketmq-4.4/conf/broker.conf &

在这里插入图片描述
这里已经变成true了

在这里插入图片描述
重新启动消费者看会不会报错

过滤成功

在这里插入图片描述

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

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

相关文章

[uni-app] canvas绘制圆环进度条

文章目录 需求参考链接基本问题的处理1:画布旋转的问题2:注意arc()的起始位置是3点钟方向3: 如果绘制1.9*Matn.PI的圆环, 要保证其实位置在0点方向?4:小线段怎么画, 角度怎么处理? 源码 需求 要绘制一个如此的进度条 参考链接 uni-app使用canvas绘制时间刻度以及不显示问…

线段树【java实现】

一、解决问题 区间最值和区间求和问题 力扣相关题目&#xff1a; ​​​​​​303. 区域和检索 - 数组不可变 729. 我的日程安排表 I 二、线段树定义 平衡二叉树&#xff0c;数组中的元素都存储在叶子结点中&#xff0c;如图是一个求区间最大值的线段树。 已知数组arr[11…

电源特性测试之电源模块负载调整率测试方法及测试条件

负载调整率是衡量电源好坏的重要指标&#xff0c;它反映的是当负载电流变化时&#xff0c;稳压电源输出电压相应的变化情况。好的电源负载变化时引起的输出变化较小&#xff0c;通常是在3%-5%。负载调整率是电源模块测试的一个重要步骤&#xff0c;今天纳米软件将为大家介绍负载…

Yakit工具篇:综合目录扫描与爆破的使用

简介&#xff08;来自官方文档&#xff09; 目录扫描是一种常用的Web应用程序安全测试技术&#xff0c;用于发现Web应用程序中存在的可能存在的漏洞和弱点。其原理是通过对Web应用程序中的目录和文件进行遍历&#xff0c;来发现可能存在的安全漏洞和风险。 具体来说&#xff…

大语言模型在推荐系统的实践应用

本文从应用视角出发&#xff0c;尝试把大语言模型中的一些长处放在推荐系统中。 01 背景和问题 传统的推荐模型网络参数效果较小(不包括embedding参数)&#xff0c;训练和推理的时间、空间开销较小&#xff0c;也能充分利用用户-物品的协同信号。但是它的缺陷是只能利用数据…

《进化优化》第5章 进化规划

文章目录 5.1 连续进化规划5.2 有限状态机优化5.3 离散进化规划5.4 囚徒困境5.5 人工蚂蚁问题 5.1 连续进化规划 目的&#xff1a;最小化f(x)&#xff0c; 这里的x是一个n维向量&#xff0c;假定对所有的x, f(x)>0。 进化规划从随机生成的一个个体种群{xi}开始, 按如下方式…

Umi3实战教程

一、框架介绍 umi是蚂蚁金服的前端开发框架&#xff0c;它内置了路由、web/移动端UI库、数据流、权限控制、常用hooks库、构建、部署、测试、等等一些工具&#xff0c;几乎涵盖了正常前端开发要用到的所有工具。 二、环境准备 pnpm 相比npm、yarn&#xff0c;pnpm更小更快扁平…

为大模型而生!顶流大佬发起成立学术会议 COLM,或成为未来 NLP 最强顶会?!

夕小瑶科技说 原创 作者 | 智商掉了一地、ZenMoore 前段时间&#xff0c;ACL 2024 的主席公开抨击称“ arXiv是科研的毒瘤”&#xff0c;这引发了大范围的争论。 一时间&#xff0c;大家对 *CL 的抵触情绪愈发高涨&#xff0c;绝大多数学界都在这场辩论中站在了支持 arXivTwit…

PreparedStatement

使用参数化查询&#xff1a;使用预编译的语句和参数化查询来执行SQL语句&#xff0c;而不是将用户输入直接嵌入到SQL语句中。这将帮助防止恶意输入注入SQL语句。

Zoho WorkDrive荣获专业研究机构评定的“Leader”称号

近年&#xff0c;在云计算、大数据、移动互联网、社交所引领的数字化转型变革中&#xff0c;企业对于数字资产的保护和利用愈加重视。相较于结构化数据&#xff0c;企业对于非结构化数据&#xff08;文档、图片、音视频等&#xff09;管理的需求更强、难度更大。 同时&#xf…

NodeJS 菜鸟教程目录

NodeJS 七天入门教程 谁适合阅读本教程? 前端开发者和希望构建后端的开发者:如果你是一名前端开发者,或者是一名希望构建后端的开发者,那么本教程将为你提供一个很好的学习Node.js的机会。通过学习本教程,你可以更好地了解后端开发的技术和Node.js在后端开发中的应用。初学…

日常学习记录随笔-redis实战

redis的持久化&#xff08;rdb,aof,混合持久化&#xff09; redis的主从架构以及redis的哨兵架构 redis的clusterredis 是要做持久化的&#xff0c;一般用redis会把数据放到缓存中为了提升系统的性能 如果redis没有持久化&#xff0c;重启的化数据就会丢失&#xff0c;所有的请…

【LeetCode热题100】--31.下一个排列

31.下一个排列 思路&#xff1a; 方法&#xff1a;两遍扫描 注意到下一个排列总是比当前排列要大&#xff0c;除非该排列已经是最大的排列。我们希望找到一种方法&#xff0c;能够找到一个大于当前序列的新序列&#xff0c;且变大的幅度尽可能小。具体地&#xff1a; 我们需要…

5年经验之谈 —— App测试、Web测试和接口测试一般测试流程!

app测试流程&#xff1a; 1、需求分析&#xff0c;了解具体需求 2、测试准备&#xff1a;原型图、效果图、需求文件、测试用例、用例评审、各种测试数据准备 3、测试环节&#xff1a;接受版本&#xff0c;开始执行 1&#xff09;冒烟测试&#xff1a;对版本质量的控制以及此…

【LeetCode: 260. 只出现一次的数字 III | 位运算 | 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

ModStartCMS v7.4.0 公共图片库支持,安全功能升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议&#xff0c;免费且不限制商业使用。 功能特性 丰富的模块市…

C# 开发工具包 – 现已正式发布

作者&#xff1a;Wendy Breiding 排版&#xff1a;Alan Wang 今天&#xff0c;我们很高兴地宣布 C# 开发工具包正式发布&#xff0c;C# 开发工具包是一个 Visual Studio Code 扩展&#xff0c;为 Linux、macOS 和 Windows 带来了改进的编辑器优先 C# 开发体验。 谢谢社区的努…

文件传输软件的挑战与发展趋势

无论是在教育、医疗、金融、媒体、政府等行业&#xff0c;还是在个人生活和工作中&#xff0c;文件传输软件都有着广泛的应用价值和意义。然而&#xff0c;随着信息技术的发展和数据量的增长&#xff0c;文件传输软件也面临着一些挑战和问题&#xff0c;同时也有着一些发展趋势…

eNSP在hybrid接口上配置vlan

一、什么是vlan VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种通信技术&#xff0c;它可以将一个物理的局域网在逻辑上划分成多个广播域。每个VLAN都是一个广播域&#xff0c;VLAN内的主机可以直接通信&#xff0c;而VLAN之间则不能直…

SAP-QM-质检收货时报错

采购订单收货时&#xff0c;报错,点击蓝字查看未清的检验批&#xff0c;做使用决策QA11&#xff0c;完成后回复正常。