当前位置: 首页 > 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了

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

过滤成功

在这里插入图片描述

http://www.lryc.cn/news/196596.html

相关文章:

  • mysql中date/datetime类型自动转go的时间类型time.Time
  • MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)
  • LDAP协议工作原理
  • 【Jetpack Compose】BOM是什么?
  • 多域名SSL数字证书是什么呢
  • 杭电oj--求奇数的乘积
  • E053-web安全应用-Brute force暴力破解初级
  • 外汇天眼;VT Markets 赞助玛莎拉蒂MSG Racing电动方程式世界锦标赛
  • 使用vscode + vite + vue3+ element3 搭建vue3脚手架
  • 竞赛 深度学习+opencv+python实现车道线检测 - 自动驾驶
  • spring boot 下载resources下的静态文件为流格式
  • HTML渲染过程
  • [已解决]llegal target for variable annotation
  • nodejs基于vue小型企业银行账目管理系统
  • pointnet和pointnet++点云分割和分类
  • Docker-compose和Consul
  • AFL模糊测试+GCOV覆盖率分析
  • leetcode 965.单值二叉树
  • 云计算:掌控未来,一触即发!
  • Mybatis对数据库进行增删查改以及单元测试
  • .bat 批处理 - 查看 MySQL 状态然后启动或关闭
  • 跳转传参有几种方式
  • DVWA靶场Medium难度部分解析
  • SVG图形
  • 冒泡排序和简答选择排序
  • leetcode3. 无重复字符的最长子串 [滑动窗口]
  • 软件工程与计算总结(十六)详细设计的设计模式
  • List集合拆分为多个List
  • Hadoop3教程(十三):MapReduce中的分区
  • 笔记本Win10系统一键重装操作方法