批量消息发送|学习笔记

简介: 快速学习批量消息发送

开发者学堂课程【RocketMQ知识精讲与项目实战(第一阶段)批量消息发送】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/702/detail/12385


批量消息发送

 

内容介绍:

一、批量消息概念

二、代码实现

 

一、批量消息概念

批量消息发送能显著提高传递消息的性能。限制是这些批量消息应该有相同的

topic,相同的 waitstoremsgok,而且不能是延时消息,此外,这一批消息的总大

小不应超过4mb。

之前的课程发送的消息是一条一条发送的,批量则是一次性同时发的,也就是在

send 处用一个集合。

 

二、代码实现

创建消费者和生产者,在 producer 中构建一个集合,再创建多个消息对象。

将 producer 和 consume r的 topic 都设置为 batchtopic,启动消费者。可以看到消费者一次性发送了三条,

在发送批量消息时,有一个注意事项就是每次发送不能超过4mb,则很容易使用批

量处理,

样例如下:

string topic="BatchTest‘’:

List<message> messages=new ArrayList<>():

messages.add(new Message(topic,"TagA"."orderid001","He1lo world 0" .getytes()));

messages.add(newMessage(topic,“Taga"。"orderID002", "Helloworld 1’’.getsytes()));

messages.add(newMessage(topic,’’tagA”,"order1D003","He11o world 2.getBytesO)));

try{

producer.send(messages);

}catch(Exception e){

e.printstackTrace():

 //error

}

如果超过4mb,需要把消息进行分割,创建一个迭代器,把集合传递到迭代器中

去,通过 lisitem,从集合当中取出分割的消息,

public class Listsplitter implements Iterator> {

private final int SIZE_LIMIT = 1024 * 1024* 4

private final List messages;

private int currindex:

pub1ic Listsplitter(List messages){

this.messages =messages

}

override

public boolean hasnext(){

return currIndex):

}

override

pub1ic Listnext(){

int nextindex=currIndex

int totalsize = 0;

for (: nextIndex< messages.size(); nextIndex++){

Message message=messages.get(nextIndex);

int tmpsize = message.gettopic(). length()+ message. Getbody(). length;

Map propertin message.getproperties();

for (Map.Entry entry : properties.entryset()) (

tmpsize += entry.getkey().length() + entry.getvalue().length):

}

tmpsize = tmpsize + 20; // 增加日志的开20字节

消息的长度取决于 gettopiclength、getbodylength,得到一个消息长度后,做出

判断,如果大于4mb了,就是有问题了,就直接跳过看下一条消息。

所以在发送的过程中,通过迭代器的运算可以截取消息。

相关文章
|
数据可视化 Swift 开发者
零一万物开源Yi系列“理科状元”Yi-9B,消费级显卡可跑,魔搭社区最佳实践
零一万物发布并开源了Yi系列中的“理科状元”——Yi-9B,可在魔搭体验
|
运维 监控 数据可视化
软件质量保障体系建设
所谓的愿景,就是长期规划,我们要到哪里去的问题。一个组织或者团队,是一定要有愿景的。在软件质量保障领域,所谓的愿景概括来说就四个字:保质提效。
软件质量保障体系建设
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)(一)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)
1049 0
|
人工智能 安全 Cloud Native
|
5月前
|
API
Dataphin功能Tips系列(58)- 支持OAuth2.0认证方式的API数据源
在数据集成过程中,Dataphin需通过API从外部系统获取数据,而这些系统常采用动态令牌鉴权机制。本文介绍如何在Dataphin中配置支持OAuth 2.0认证的API数据源,实现自动获取和刷新访问令牌,确保安全高效地进行数据请求与集成。
150 8
|
Java Python
gc模块的set_threshold函数
gc模块的set_threshold函数
368 1
IDEA 自定义注解(类注释、方法注释)
IDEA 自定义注解(类注释、方法注释)
6475 1
IDEA 自定义注解(类注释、方法注释)
|
数据采集 物联网 数据挖掘
API接口的应用
API接口在现代技术中至关重要,它使不同软件、设备间能相互通信和数据共享。在社交网络中,如Facebook及Twitter的API让开发者能够构建交互式应用;移动应用则依赖API与服务器通信,实现天气查询、地图定位等功能;云计算平台如AWS通过API提供了资源管理和配置服务;物联网设备使用API实现数据交换;视频游戏开发商利用各类平台API发布游戏。此外,API爬虫数据接口技术通过爬虫抽取并输出数据,被广泛应用于获取商业、金融、医疗等领域的大数据,以支持数据分析、策略制定及业务流程优化,极大地提高了数据收集与处理的效率和准确性。
|
SQL Java 数据库连接
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
还在为学MyBatis发愁?史上最全,一篇文章带你学习MyBatis
336 1
|
安全 Java 数据库
Spring Security自定义登录认证
Spring Security自定义登录认证
628 0