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

Java小案例-RocketMQ的11种消息类型,你知道几种?(普通消息和批量消息)

前言

这篇给大家讲普通消息和批量消息,主要配合代码进行讲解,关于RocketMQ的基础知识已经在上篇给大家讲过需要回顾的点击下面这个链接去看

RocketMQ基础知识

普通消息

普通消息其实就很简单,是Apache RocketMQ中最基础的消息形式,区别于有特性的顺序消息、定时/延时消息和事务消息。普通消息一般应用于微服务解耦、事件驱动、数据集成等场景,这些场景大多数要求数据传输通道具有可靠传输的能力,且对消息的处理时机、处理顺序没有特别要求。

在电商交易场景中,上游订单系统将用户下单支付这一业务事件封装成独立的普通消息并发送至RocketMQ服务端,下游按需从服务端订阅消息并按照本地消费逻辑处理下游任务。每个消息之间都是相互独立的,且不需要产生关联。

在离线的日志收集场景中,通过埋点组件收集前端应用的相关操作日志,并转发到RocketMQ。每条消息都是一段日志数据,RocketMQ不做任何处理,只需要将日志数据可靠投递到下游的存储系统和分析系统即可,后续功能由后端应用完成。

普通消息是RocketMQ基本消息功能,支持生产者和消费者的异步解耦通信。

例如下面这个代码就是普通消息:

public class Producer {public static void main(String[] args) throws Exception {//创建一个生产者,指定生产者组为 sanyouProducerDefaultMQProducer producer = new DefaultMQProducer("sanyouProducer");// 指定NameServer的地址producer.setNamesrvAddr("192.168.200.143:9876");// 启动生产者producer.start();//创建一条消息 topic为 sanyouTopic 消息内容为 java日记Message msg = new Message("sanyouTopic", "java日记".getBytes(RemotingHelper.DEFAULT_CHARSET));// 发送消息并得到消息的发送结果,然后打印SendResult sendResult = producer.send(msg);System.out.printf("%s%n", sendResult);// 关闭生产者producer.shutdown();}}

构建的消息的topic为sanyouTopic,内容为java日记,这就是一条很普通的消息

批量消息

MQ的批量消息是指将多条小的消息合并成一个批量消息,然后一次发送出去。

这种批量发送的好处是可以减少网络IO,提升吞吐量。在实际使用时,一个批次消息的大小不应超过1MB,但实际的最大限制是4194304字节,大概4MB。

同时,批量消息的使用也有一定限制,这些消息应该有相同的Topic,相同的waitStoreMsgOK。而且不能是延迟消息、事务消息等。

通俗易懂说就是将多个消息同时发过去,减少网络请求的次数

public class Producer {public static void main(String[] args) throws Exception {//创建一个生产者,指定生产者组为 sanyouProducerDefaultMQProducer producer = new DefaultMQProducer("sanyouProducer");// 指定NameServer的地址producer.setNamesrvAddr("192.168.1.135:9876");// 启动生产者producer.start();//用以及集合保存多个消息List<Message> messages = new ArrayList<>();messages.add(new Message("sanyouTopic", "java日记 0".getBytes()));messages.add(new Message("sanyouTopic", "java日记 1".getBytes()));messages.add(new Message("sanyouTopic", "java日记 2".getBytes()));// 发送消息并得到消息的发送结果,然后打印SendResult sendResult = producer.send(messages);System.out.printf("%s%n", sendResult);// 关闭生产者producer.shutdown();}}

多个普通消息同时发送,这就是批量消息

不过在使用批量消息的时候,需要注意以下两点

  • 每条消息的Topic必须都得是一样的

  • 不支持延迟消息和事务消息

总结

普通消息和批量消息比较简单,没有复杂的逻辑,就是将消息发送过去,在ConsumeQueue和CommitLog存上对应的数据就可以了。

联系方式

关于文章中大家有任何疑问可以通过关注公众号《编程乐学》进行留言,同时,公众号还有更多有趣的项目以及关于学习编程的笔记资料大家可以看看,欢迎大家进行留言。

相关文章:

Java小案例-RocketMQ的11种消息类型,你知道几种?(普通消息和批量消息)

前言 这篇给大家讲普通消息和批量消息&#xff0c;主要配合代码进行讲解&#xff0c;关于RocketMQ的基础知识已经在上篇给大家讲过需要回顾的点击下面这个链接去看 RocketMQ基础知识 普通消息 普通消息其实就很简单&#xff0c;是Apache RocketMQ中最基础的消息形式&#x…...

前端小技巧: 设计一个简版前端统计 SDK

统计 sdk 如何设计 1 ) 概述 客户端一个sdk &#xff0c;把数据发送给服务端(第三方统计平台)服务端产生一个统计的报表 2 &#xff09;需求点 访问量&#xff1a;pv自定义事件&#xff1a;用户的一切行为我们都可以自定义采集性能&#xff0c;错误 3 ) 代码实现 const P…...

DevOps搭建(十一)-Jenkins容器内部使用Docker详解

1、目的 配置的目的是使得Jenkins容器可以直接使用宿主机的Docker,从而可以直接使用Docker命令进行本地打包操作,然后推送到Harbor镜像仓库。 2、修改数据卷 如何在docker中执行宿主机的docker操作,我们管它叫docker in docker。 至于为什么要在docker中操作宿主机的doc…...

用户访问认证

注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface Login { }自定义拦截器 Component public class AuthInterceptor implements HandlerInterceptor {ResourceJwtUtils jwtUtils;Overridepublic boolean preHandle(HttpServ…...

前端知识(七)———HTTPS:保护网络通信安全的关键

当谈到网络通信和数据传输时&#xff0c;安全性是一个至关重要的问题。在互联网上&#xff0c;有许多敏感信息需要通过网络进行传输&#xff0c;例如个人身份信息、银行账户信息和商业机密等。为了保护这些信息不被未经授权的人访问和篡改&#xff0c;HTTPS&#xff08;超文本传…...

element-ui按钮el-button,点击之后恢复之前的颜色

在开发过程中, 使用el-button 按钮点击之后, 没有恢复到之前的颜色, 还是保持点击之后的颜色,需要解决这个问题, <template><div><el-button size"mini" type"primary" plain click"onClick($event)">按钮</el-button>…...

Excel: Python 如何干掉 VBA 系列 乙

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/k2XtfXS3GUt4r2QhizMOVg 创建工作表格 创建表格 xlwings 就可以协助创建插入了宏的 excel 表格。 先找到一个心满意足的目录&#xff0c;一般我…...

算法笔记—链表、队列和栈

链表、队列和栈 1. 链表1.1 单链表反转1.2 双链表反转1.3 合并两个有序链表1.4 链表相加1.5 划分链表 2. 队列和栈2.1 循环队列2.2 栈实现队列2.3 队列实现栈2.4 最小栈2.2 双端队列 1. 链表 1.1 单链表反转 力扣 反转链表 // 反转单链表public ListNode reverseList(ListNod…...

MySQL中的时间函数整理汇总

1.获取当前时间 -- 获取当前时间 SELECT NOW(); -- 获取当前日期 SELECT CURDATE(); -- 获取当前时分秒 SELECT CURTIME(); 2.获取对应日期对应的年/月/日/月份名/星期数 -- 返回对应日期对应的年/月/日/月份名/星期数 select year(now())as 年,month(now())as 月,day(now())…...

stu06-VSCode里的常用快捷键

Alt Z&#xff1a;文字自动换行。当一行的文字太长时&#xff0c;可以使用。或者查看→自动换行Alt Shift ↓ &#xff1a;快速复制当前行到下一行Alt Shift ↑ &#xff1a;快速复制当前行到上一行Alt B&#xff1a;在默认浏览器中打开当前.html文件Ctrl Enter&#xf…...

Bypass open_basedir

讲解 open_basedir是php.ini中的一个配置选项&#xff0c;可用于将用户访问文件的活动范围限制在指定的区域。 假设open_basedir/var/www/html/web1/:/tmp/&#xff0c;那么通过web1访问服务器的用户就无法获取服务器上除了/var/www/html/web1/和/tmp/这两个目录以外的文件。…...

【数据库设计和SQL基础语法】--查询数据--过滤

一、过滤数据 1.1 WHERE子句 基本条件过滤 使用比较运算符 在SQL中&#xff0c;基本条件过滤是通过使用比较运算符来限定检索的数据。以下是一些常用的比较运算符和它们的用法&#xff1a; 运算符说明示例等于 ()用于检索列中与指定值相等的行。示例&#xff1a;SELECT * FROM…...

关于git clone速度极慢的解决方法

&#xff01;&#xff01;&#xff01;&#xff01;前提条件&#xff1a;得有一个可靠且稳定的梯子&#xff0c;如果没有接下来的就不用看了 前言&#xff1a;我在写这篇文章前&#xff0c;也搜索过很多相关git clone速度很慢的解决方法&#xff0c;但是很多很麻烦&#xff0c…...

软件设计不是CRUD(8):低耦合模块设计实战——组织机构模块(下)

接上文《软件设计不是CRUD&#xff08;7&#xff09;&#xff1a;低耦合模块设计实战——组织机构模块&#xff08;中&#xff09;》 5、某项目研发团队进行扩展 上文中我们介绍了如何研发一个具有较低耦合强度的组织机构模块&#xff08;包括模块的SDK和模块的默认本地数据库…...

docker-compose Install gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…...

【Pytorch】学习记录分享1——Tensor张量初始化与基本操作

1. 基础资料汇总 资料汇总 pytroch中文版本教程 PyTorch入门教程 B站强推&#xff01;2023公认最通俗易懂的【PyTorch】教程&#xff0c;200集付费课程&#xff08;附代码&#xff09;人工智能_机器 视频 1.PyTorch简介 2.PyTorch环境搭建 basic: python numpy pandas pytroch…...

Python数据科学视频讲解:Python的数据运算符

2.9 Python的数据运算符 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解2.9节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#xff0c;包括数据科…...

参数学习——糖果问题(人工智能期末复习)

之前看了好久都不知道这题咋写&#xff0c;后来看了这篇机器智能-高频问题&#xff1a;糖果问题&#xff0c;大概看明白了&#xff0c;其实主要围绕着这两个公式 光看公式也看不懂&#xff0c;还是要结合题目来 己知有草莓味和酸橙味两种类型的糖果&#xff0c;分别放入5种不同…...

【深度学习】注意力机制(六)

本文介绍一些注意力机制的实现&#xff0c;包括MobileVITv1/MobileVITv2/DAT/CrossFormer/MOA。 【深度学习】注意力机制&#xff08;一&#xff09; 【深度学习】注意力机制&#xff08;二&#xff09; 【深度学习】注意力机制&#xff08;三&#xff09; 【深度学习】注意…...

螺旋矩阵算法(leetcode第59题)

题目描述&#xff1a; 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1&#xff1a;输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 2&#xff1a;输入&#…...

Conda环境管理全攻略:从零配置到VSCode无缝衔接(附清华镜像加速)

Conda环境管理全攻略&#xff1a;从零配置到VSCode无缝衔接&#xff08;附清华镜像加速&#xff09; 在数据科学和机器学习领域&#xff0c;Python环境的配置与管理往往是项目开始的第一步&#xff0c;也是最容易让初学者感到困惑的环节。不同项目可能需要不同版本的Python解释…...

Qwen3.5-2B镜像免配置部署:开箱即用WebUI(7860端口)快速上手教程

Qwen3.5-2B镜像免配置部署&#xff1a;开箱即用WebUI&#xff08;7860端口&#xff09;快速上手教程 1. 模型简介 Qwen3.5-2B是通义千问系列中的轻量化多模态基础模型&#xff0c;仅有20亿参数规模&#xff0c;专为低功耗、低门槛部署场景设计。这个版本特别适合在端侧设备和…...

Nacos服务实例权重设置详解:如何根据服务器性能动态调整流量分配

Nacos服务实例权重设置详解&#xff1a;如何根据服务器性能动态调整流量分配 在分布式系统架构中&#xff0c;服务实例的性能差异是不可避免的现实问题。新采购的服务器与运行多年的老旧设备并存&#xff0c;不同配置的云主机混合部署&#xff0c;这些场景都要求我们能够智能地…...

GLM-OCR部署避坑:CPU模式也能用,无显卡用户详细指南

GLM-OCR部署避坑&#xff1a;CPU模式也能用&#xff0c;无显卡用户详细指南 你是不是也遇到过这种情况&#xff1a;看到别人用AI模型轻松识别文档、提取表格&#xff0c;自己也想试试&#xff0c;结果一查部署要求——“需要NVIDIA显卡&#xff0c;显存8GB以上”。手头只有一台…...

别再傻傻分不清了!一文搞懂微信支付代金券和商家券的核心区别与适用场景

微信支付代金券VS商家券&#xff1a;技术选型与场景化应用指南 在数字化营销的浪潮中&#xff0c;优惠券作为连接商户与消费者的重要纽带&#xff0c;其技术实现方式直接影响营销效果与用户体验。微信支付提供的代金券与商家券看似功能相似&#xff0c;实则存在架构级差异。本文…...

实战演练:基于快马与豆包开放平台,快速开发智能邮件处理助手

今天想和大家分享一个实战项目&#xff1a;基于豆包开放平台的智能邮件助手开发过程。这个工具特别适合需要频繁处理邮件的职场人士&#xff0c;能自动完成邮件摘要、待办事项提取、回复草拟等重复性工作。 项目背景与需求分析 日常工作中&#xff0c;我们经常要处理大量邮件。…...

ai辅助c++开发:让快马成为你的codeblocks智能编程助手与算法导师

AI辅助C开发&#xff1a;让快马成为你的CodeBlocks智能编程助手与算法导师 最近在用CodeBlocks开发一个C图形化应用时&#xff0c;遇到了一个典型问题&#xff1a;需要实现非递归快速排序算法并测试性能。传统开发方式可能需要反复查阅文档、调试代码&#xff0c;但借助InsCod…...

告别官方文档!用IntelliJ IDEA 2023.3 + Flutter 3.19 搭建环境,我踩过的坑你别再踩了

告别官方文档&#xff01;用IntelliJ IDEA 2023.3 Flutter 3.19 搭建环境&#xff0c;我踩过的坑你别再踩了 如果你正在寻找一份真正实用的Flutter环境搭建指南&#xff0c;那么你来对地方了。作为一个刚从官方文档和无数博客教程中"幸存"下来的开发者&#xff0c;我…...

OneMore插件:3大核心功能让OneNote效率提升300%

OneMore插件&#xff1a;3大核心功能让OneNote效率提升300% 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 传统笔记管理vs智能插件&#xff1a;效率差距在哪里&#…...

AI辅助开发winner1300图像处理:用自然语言描述自动生成并行滤波代码

今天尝试用AI辅助开发一个基于winner1300框架的图像并行处理项目&#xff0c;整个过程比想象中顺利很多。记录下这个用自然语言描述就能生成完整代码的神奇体验。 项目需求分析 我需要实现一个能同时应用高斯模糊和边缘检测滤镜的图像处理工具。核心难点在于如何利用winner1300…...