RocketMQ最佳实战

RocketMQ 客户端最佳实践
1.Producer最佳实践
发送消息注意事项
1).一个应用尽可能用一个Topic,消息子类型用tags来标识,tags可以由应用自由设置。
2).消息发送成功或者失败,要打印消息日志,务必要打印sendresult和key字段。
SEND_OK,消息发送成功。
3).对于消息不可丢失应用,务必要有消息重发机制,例如如果消息发送失败,存储到数据库,能有定时程序尝试重发,或者人工触发重发。
2.消息发送失败如何处理:
1).重试
2).如果调用send同步方法发送失败,则尝试将消息存储到db,由后台线程定时重试,保证消息一定到达Broker。
3.Consumer 最佳实践
1).消费过程要做到幂等
RocketMQ目前无法避免消息重复,所以如果业务对消费重复非常敏感,务必要在业务层面去重,有以下几种去重方式:
a).将消息的唯一键,可以是msgId,也可以是消息内容中的唯一标识字段,例如订单Id等,消费之前判断是否在Db或Tair(全局KV存储)中存在,如果不存在则插入,并消费,否则跳过。
b).用业务层面的状态机去重。
2).提高消费并行度
a).同一个ConsumerGroup下,通过增加Consumer实例数量来提高并行度,超过订阅队列数的Consumer实例无效。可以通过加机器,或者在已有机器启动多个进程的方式。
b).提高单个Consumer的消费并行线程,通过修改以下参数: consumeThreadMin consumeThreadMax
3).消息批量消费
4).跳过非重要消息
5).优化每条消息消费过程

原文地址:https://www.cnblogs.com/Jtianlin/p/8653034.html

时间: 2024-08-30 00:51:40

RocketMQ最佳实战的相关文章

MySQL 5.7--------SSL连接最佳实战

                                                                                         MySQL 5.7--------SSL连接最佳实战 1. 背景 * 在生产环境下,安全总是无法忽视的问题,数据库安全则是重中之重,因为所有的数据都存放在数据库中 * 当使用非加密方式连接MySQL数据库时,在网络中传输的所有信息都是明文的,可以被网络中所有人截取,敏感信息可能被泄露.在传送敏感信息(如密码)时,可以采用

vue2 入门 教程 单页应用最佳实战[*****]

推荐 vue2 入门 教程 -------- 看过其他的,再看作者的,很赞 vue2 入门 教程 单页应用最佳实战 :  具体在 https://github.com/MeCKodo/vue-tutorial ----------------------------- 通过本文,我们可以学习到许多关于vue的特性. 1.了解了vue-cli脚手架 2.初步对webpack有了一些了解和认识 3.如何用.vue愉快的开发 4.使用vuex进行组件通信 5.路由(子路由)的应用 6.使用 vue-d

日志最佳实战

日志最佳实战 1. logback 2. 开发debug,生产info , 异常中用error 3. 使用self4j的占位符方式输入日志.多个参数输出,参数项使用数组的形式.举例 : logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol); 此种形式在确定日志输出级别前,不会拼接字符串. // LOGGER.isDebugEnabled() 4. 访问日志和错误日志记录到不同的文件中,方便查询

DataWorks调度配置最佳实战

摘要: DataWorks基于MaxCompute作为核心的计算.存储引擎,提供了海量数据的离线加工分析.数据挖掘的能力.通过DataWorks,可对数据进行数据传输.数据转换等相关操作,从不同的数据存储引入数据,对数据进行转化处理,最后将数据提取到其他数据系统. 摘要:DataWorks基于MaxCompute作为核心的计算.存储引擎,提供了海量数据的离线加工分析.数据挖掘的能力.通过DataWorks,可对数据进行数据传输.数据转换等相关操作,从不同的数据存储引入数据,对数据进行转化处理,最

rocketmq最佳实践

最佳实践 1 生产者 1.1 发送消息注意事项 1 Tags的使用 一个应用尽可能用一个Topic,而消息子类型则可以用tags来标识.tags可以由应用自由设置,只有生产者在发送消息设置了tags,消费方在订阅消息时才可以利用tags通过broker做消息过滤:message.setTags("TagA"). 2 Keys的使用 每个消息在业务层面的唯一标识码要设置到keys字段,方便将来定位消息丢失问题.服务器会为每个消息创建索引(哈希索引),应用可以通过topic.key来查询这

MySQL--------基于binlog实现闪回最佳实战

1. 背景 * 为了数据安全,搭建了主从.实时主从备份只能防止硬件问题,比如主库的硬盘损坏.但对于误操作,则无能为力.比如在主库误删一张表,或者一个update语句没有指定where条件,导致全表被更新.当操作被同步到从库上后,则主从都"回天无力". * 闪回用于快速恢复由于误操作丢失的数据.在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos).比如忘了带where条件的update.delete操作,传统的恢复方式是利用全备+二进制日志前滚进行恢复

Webpack之“多页面开发”最佳实战

前言:相信之前看过这篇文章,前端构建工具之“Webpack”的朋友,对于Webpack有了一定的了解.那么今天就跟大家分享下:如何利用webpack,来进行多页面项目实战开发. 一.项目初始化安装 1.先安装node.js 和 webpack 第一步:如果没有安装node的朋友,可以去node中文官网下载.安装好后,打开cmd工具,输入: 1  node - v // 如果有显示内容则证明安装成功(这是看我们node版本的指令) 如下图: 第二步: 全局安装webpack 1  npm  ins

异常处理最佳实战

1. 只在必要使用异常的地方才使用异常,不要用异常去控制程序的流程..慎地使用异常,异常捕获的代价非常高昂,异常使用过多会严重影响程序的性能. 2. 切忌使用空catch块.千万不要使用空的catch块,空的catch块意味着你在程序中隐藏了错误和异常,并且很可能导致程序出现不可控的执行结果.如果你非常肯定捕获到的异常 不会以任何方式对程序造成影响,最好用Log日志将该异常进行记录,以便日后方便更新和维护. 3. 异常信息放到一个单独的文件中 4. 在finally中释放资源 5. 如果客户端可

Docker--------docker-compose编排最佳实战

1. 背景 Docker Compose是一个用来定义和运行复杂应用的Docker工具.使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作. Docker Compose使用yml文件格式定义描述. 2. 安装方式 * 离线安装 下载可执行文件至执行目录 [[email protected] ~]# curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/