04、RocketMQ -- 核心基础使用
目录
- 核心基础使用
- 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了

重新启动消费者看会不会报错
过滤成功

相关文章:
04、RocketMQ -- 核心基础使用
目录 核心基础使用1、入门案例生产者消费者 2、消息发送方式方式1:同步消息方式2:异步消息方式3:一次性消息管控台使用过程中可能出现的问题 3、消息消费方式集群模式(默认)广播模式 4、顺序消息分析图:代码…...
mysql中date/datetime类型自动转go的时间类型time.Time
在DSN中需要加入parseTimetrue&&locLocal,或 charsetutf8mb4&locAsia%2FShanghai&parseTimetrue。 package main_testimport ("database/sql""fmt""testing""time"_ "github.com/go-sql-driver/mysq…...
MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)
目录 前言 几个高频面试题目 如何选择合适的面扫相机 如何选择光学滤波器 知识储备...
LDAP协议工作原理
LDAP,全称Lightweight Directory Access Protocol,译为轻量目录访问协议,是一个在互联网中广泛使用的协议,主要用于实现网络中的信息查找和检索。在身份认证方面,LDAP起着重要的作用。 LDAP的工作原理主要包括以下几个…...
【Jetpack Compose】BOM是什么?
前言 本篇旨在帮助小伙伴们了解和使用Compose中BOM相关的知识,在Compose的开发过程中更加便捷、统一的管理相关依赖信息。 BOM基础知识 Compose推出的BOM为物料清单的意思,BOM全称为Bill Of Materials,Compose推出BOM的意义旨在通过指定的…...
多域名SSL数字证书是什么呢
多域名SSL数字证书是众多SSL数字证书中最灵活的一款SSL证书产品。一般一张SSL证书只能保护一个域名,即使能保护多个域名站点,证书保护的域名类型也有限制(通配符SSL数字证书)。多域名SSL数字证书既能用一张SSL证书保护多个域名网站,又不限制域…...
杭电oj--求奇数的乘积
Problem Description 给你n个整数,求他们中所有奇数的乘积。 Input 输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存…...
E053-web安全应用-Brute force暴力破解初级
课程分类: web安全应用 实验等级: 中级 任务场景: 【任务场景】 小王接到磐石公司的邀请,对该公司旗下的网站进行安全检测,经过一番检查发现该论坛的后台登录页面上可能存在万能密码漏洞,导致不知道账号密码也能登录后台&am…...
外汇天眼;VT Markets 赞助玛莎拉蒂MSG Racing电动方程式世界锦标赛
随着国际汽联电动方程式世界锦标赛第十赛季的到来,外汇经纪商 VT Markets 和玛莎拉蒂 MSG Racing 宣布了一项为期多年的全球合作。 外汇天眼温馨提醒:在做外汇交易之前,一定要审核清楚外汇平台的资质以及官网信息,以防上当受骗&am…...
使用vscode + vite + vue3+ element3 搭建vue3脚手架
技术栈 开发工具:VSCode 代码管理:Git 前端框架:Vue3 构建工具:Vite 路由:vue-router 状态管理:vuex AJAX:axios UI库:element-ui 3 数据模拟:mockjs css预处理…...
竞赛 深度学习+opencv+python实现车道线检测 - 自动驾驶
文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &am…...
spring boot 下载resources下的静态文件为流格式
废话不多说,直接上代码 一、下载逻辑 public void downAppApk(HttpServletResponse response){ClassPathResource classPathResource new ClassPathResource("app/xxxxxx.apk");if (!classPathResource.exists()) {throw new BusinessException("安…...
HTML渲染过程
整个渲染过程: 将 URL 对应的各种资源,通过浏览器渲染引擎的解析,输出可视化的图像。 基本概念: HTML 解释器:解析html语言、将html文本翻译成dom树; CSS 解释器:解析css语言,给…...
[已解决]llegal target for variable annotation
llegal target for variable annotation 问题 变量注释的非法目标 思路 复制时编码错误,自己敲一遍后正常运行 #** 将垂直知识加入prompt,以使其准确回答 **# prompt_templates { # "recommand":"用户说:__INPUT__ …...
nodejs基于vue小型企业银行账目管理系统
这就产生了以台式计算机为核心的管理信息系统在大规模的事务处理和对工作流的管理等方面的应用,在银行帐目管理之中的应用日益增加 且会出现信息的重复传递问题,因此该过程需要进行信息化,以利用计算机进行帐目管理。 3.1 银行帐目管理系统功能模块 …...
pointnet和pointnet++点云分割和分类
目录 1. pointnet 1.1 点云数据的特点 1.2 模型功能 1.3 网络结构 1.3.1 分类网络 1.3.2 分割网络 2. pointnet 2.1 模型 2.2 sampling layer组件 2.3 grouping layer 2.4 pointnet 1. pointnet 1.1 点云数据的特点 (1)无序性:…...
Docker-compose和Consul
目录 1、docker-compose 简介 1.1 Docker-compose 简介 2、compose 部署 2.1 Docker Compose 环境安装 2.2 YAML 文件格式及编写注意事项 * * * * 2.3 Docker Compose配置常用字段 2.4 Docker Compose 常用命令 2.5 Docker Compose 文件结构 3、Consul 3.1 什么是…...
AFL模糊测试+GCOV覆盖率分析
安全之安全(security)博客目录导读 覆盖率分析汇总 目录 一、代码示例 二、afl-cov工具下载 三、编译带覆盖率的版本并启动afl-cov 四、AFL编译插桩并运行afl-fuzz 五、结果查看 AFL相关详见AFL安全漏洞挖掘 GCOV相关详见GCOV覆盖率分析 现将两者结合,即进…...
leetcode 965.单值二叉树
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ //遍历判断函数 bool TreeCompare(struct TreeNode* root,int x) {if(root NULL)return true;if(root->val ! x)return false…...
云计算:掌控未来,一触即发!
🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是尘缘,一个在CSDN分享笔记的博主。📚📚 👉点击这里,就可以查看我的主页啦!👇&#x…...
CANN/asc-devkit asc_any函数
asc_any 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…...
Tunasync调度器工作原理:智能任务分配与并发控制完全指南
Tunasync调度器工作原理:智能任务分配与并发控制完全指南 【免费下载链接】tunasync Mirror job management tool. 项目地址: https://gitcode.com/gh_mirrors/tu/tunasync Tunasync调度器是开源镜像同步工具的核心组件,负责智能任务分配与并发控…...
【Java+AI】Java正在悄然“杀死“Python的AI霸权——虚拟线程与GraalVM如何重写企业级AI推理规则
——尘一不染 为什么说Java才是企业AI的未来?一场迟到的技术平反 副标题:当你还在用Python调参时,成熟的企业已经在用Java构建生产级AI推理引擎了 开篇:那些年,我们对Java的误解有多 每次技术大会,只要…...
别再傻傻分不清!用打电话、对讲机、广播这些生活例子,5分钟搞懂串行通信里的单工、半双工和全双工
从生活场景秒懂通信模式:广播、对讲机与电话的硬核技术解读 刚接触嵌入式开发时,看到UART、I2C这些协议文档里蹦出的"全双工"、"半双工"术语,是不是感觉像在读天书?别急着翻教科书,其实这些抽象概…...
智能手表核心升级:三星OLED与4nm处理器如何重塑用户体验
1. 项目概述:一次旗舰智能手表核心元件的深度迭代最近看到一条关于谷歌Pixel Watch 2的消息,核心信息点很明确:屏幕将由三星供应OLED面板,同时处理器将升级到4纳米制程。这看起来只是两个硬件参数的简单罗列,但对于我们…...
从STM32F405到AT32F435:手把手教你给AocodaRC飞控换‘芯’并刷入BetaFlight固件
从STM32F405到AT32F435:国产芯片飞控改造全流程实战 对于追求极致性能的无人机玩家而言,飞控系统的硬件升级永远是绕不开的话题。当雅特力AT32F435这颗国产芯片以更高的主频、更大的Flash容量和更丰富的外设资源进入视野时,很多飞手已经按捺不…...
别让中文路径坑了你!FaceFusion在Windows和Mac上的完整环境配置与文件规范指南
别让中文路径坑了你!FaceFusion在Windows和Mac上的完整环境配置与文件规范指南 在数字创意领域,FaceFusion作为一款强大的AI换脸工具,正受到越来越多内容创作者的青睐。然而,许多用户在初次接触时往往会被一系列看似莫名其妙的错误…...
猫抓插件:浏览器资源嗅探与下载的完整手册
猫抓插件:浏览器资源嗅探与下载的完整手册 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch)是一…...
探索罗技鼠标宏:掌握PUBG压枪技术的完整路径
探索罗技鼠标宏:掌握PUBG压枪技术的完整路径 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在《绝地求生》这款竞技性极强的射击游戏…...
华为升腾C92变身校园打铃器:从Linux到Win7的完整改造指南
1. 华为升腾C92硬件潜力解析 很多人第一次接触华为升腾C92时,都会被它小巧的机身误导,以为这只是一台性能有限的瘦客户机。我当初在学校见到这批预装Linux系统的设备时,也是这么想的。直到某天停电后需要手动打铃,才萌生了改造它的…...
