当前位置: 首页 > news >正文

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&#xff1a;同步消息方式2&#xff1a;异步消息方式3&#xff1a;一次性消息管控台使用过程中可能出现的问题 3、消息消费方式集群模式&#xff08;默认&#xff09;广播模式 4、顺序消息分析图&#xff1a;代码…...

mysql中date/datetime类型自动转go的时间类型time.Time

在DSN中需要加入parseTimetrue&&locLocal&#xff0c;或 charsetutf8mb4&locAsia%2FShanghai&parseTimetrue。 package main_testimport ("database/sql""fmt""testing""time"_ "github.com/go-sql-driver/mysq…...

MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)

目录 前言 几个高频面试题目 如何选择合适的面扫相机 如何选择光学滤波器 知识储备...

LDAP协议工作原理

LDAP&#xff0c;全称Lightweight Directory Access Protocol&#xff0c;译为轻量目录访问协议&#xff0c;是一个在互联网中广泛使用的协议&#xff0c;主要用于实现网络中的信息查找和检索。在身份认证方面&#xff0c;LDAP起着重要的作用。 LDAP的工作原理主要包括以下几个…...

【Jetpack Compose】BOM是什么?

前言 本篇旨在帮助小伙伴们了解和使用Compose中BOM相关的知识&#xff0c;在Compose的开发过程中更加便捷、统一的管理相关依赖信息。 BOM基础知识 Compose推出的BOM为物料清单的意思&#xff0c;BOM全称为Bill Of Materials&#xff0c;Compose推出BOM的意义旨在通过指定的…...

多域名SSL数字证书是什么呢

多域名SSL数字证书是众多SSL数字证书中最灵活的一款SSL证书产品。一般一张SSL证书只能保护一个域名&#xff0c;即使能保护多个域名站点&#xff0c;证书保护的域名类型也有限制(通配符SSL数字证书)。多域名SSL数字证书既能用一张SSL证书保护多个域名网站&#xff0c;又不限制域…...

杭电oj--求奇数的乘积

Problem Description 给你n个整数&#xff0c;求他们中所有奇数的乘积。 Input 输入数据包含多个测试实例&#xff0c;每个测试实例占一行&#xff0c;每行的第一个数为n&#xff0c;表示本组数据一共有n个&#xff0c;接着是n个整数&#xff0c;你可以假设每组数据必定至少存…...

E053-web安全应用-Brute force暴力破解初级

课程分类&#xff1a; web安全应用 实验等级: 中级 任务场景: 【任务场景】 小王接到磐石公司的邀请&#xff0c;对该公司旗下的网站进行安全检测&#xff0c;经过一番检查发现该论坛的后台登录页面上可能存在万能密码漏洞&#xff0c;导致不知道账号密码也能登录后台&am…...

外汇天眼;VT Markets 赞助玛莎拉蒂MSG Racing电动方程式世界锦标赛

随着国际汽联电动方程式世界锦标赛第十赛季的到来&#xff0c;外汇经纪商 VT Markets 和玛莎拉蒂 MSG Racing 宣布了一项为期多年的全球合作。 外汇天眼温馨提醒&#xff1a;在做外汇交易之前&#xff0c;一定要审核清楚外汇平台的资质以及官网信息&#xff0c;以防上当受骗&am…...

使用vscode + vite + vue3+ element3 搭建vue3脚手架

技术栈 开发工具&#xff1a;VSCode 代码管理&#xff1a;Git 前端框架&#xff1a;Vue3 构建工具&#xff1a;Vite 路由&#xff1a;vue-router 状态管理&#xff1a;vuex AJAX&#xff1a;axios UI库&#xff1a;element-ui 3 数据模拟&#xff1a;mockjs css预处理&#xf…...

竞赛 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…...

spring boot 下载resources下的静态文件为流格式

废话不多说&#xff0c;直接上代码 一、下载逻辑 public void downAppApk(HttpServletResponse response){ClassPathResource classPathResource new ClassPathResource("app/xxxxxx.apk");if (!classPathResource.exists()) {throw new BusinessException("安…...

HTML渲染过程

整个渲染过程&#xff1a; 将 URL 对应的各种资源&#xff0c;通过浏览器渲染引擎的解析&#xff0c;输出可视化的图像。 基本概念&#xff1a; HTML 解释器&#xff1a;解析html语言、将html文本翻译成dom树&#xff1b; CSS 解释器&#xff1a;解析css语言&#xff0c;给…...

[已解决]llegal target for variable annotation

llegal target for variable annotation 问题 变量注释的非法目标 思路 复制时编码错误&#xff0c;自己敲一遍后正常运行 #** 将垂直知识加入prompt&#xff0c;以使其准确回答 **# prompt_templates { # "recommand":"用户说&#xff1a;__INPUT__ …...

nodejs基于vue小型企业银行账目管理系统

这就产生了以台式计算机为核心的管理信息系统在大规模的事务处理和对工作流的管理等方面的应用&#xff0c;在银行帐目管理之中的应用日益增加 且会出现信息的重复传递问题&#xff0c;因此该过程需要进行信息化,以利用计算机进行帐目管理。 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 点云数据的特点 &#xff08;1&#xff09;无序性&#xff1a…...

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覆盖率分析 现将两者结合&#xff0c;即进…...

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…...

云计算:掌控未来,一触即发!

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是尘缘&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f449;点击这里&#xff0c;就可以查看我的主页啦&#xff01;&#x1f447;&#x…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...