RocketMQ - 生产者最佳实践总结
相对消费者而言,生产者的使用更加简单,一般关注消息类型、消息发送方法和发送参数,即可正常使用RocketMQ发送消息
常用消息类型
| 消息类型 | 优点 | 缺 点 | 备注 | 
|---|---|---|---|
| 普通消息(并发消息) | 性能最好。单机TPS的级别为100 000 | 消息的生产和消费都无序 | 大部分场景适用 | 
| 分区有序消息 | 单分区中消息有序,单机发送TPS万级别 | 单点问题。如果Broker宕机,则会导致发送失败 | 大部分有序消息场景适用 | 
| 全局有序消息 | 类似传统的 Queue,全部消息有序,单机发送TPS千级别 | 单点问题。如果Broker宕机,则会导致发送失败 | 极少场景使用 | 
| 延迟消息 | RocketMO自身支持,不需要额外使用组件,支持延迟特性 | 不能根据任意时间延迟,使用范围受限。Broker 随着延迟级别增大支持越多,CPU压力越大,延迟时间不准确 | 非精确、延迟级别不多的场景,非常方便使用 | 
| 事务消息 | RocketMO自身支持,不需要额外使用组建支持事务特性 | RocketMO事务是生产者事务,只有生产者参与,如果消费者处理失败则事务失效 | 简单事务处理可以使用 | 
常用的发送方法
| 发送方法 | 优点 | 缺 点 | 备注 | 
|---|---|---|---|
| send(Message msg) 同步发送 | 最可靠 | 性能最低 | 适用于高可靠场景 | 
| send(SendCallback sendCallback) 异步发送 | 可靠,性能最高 | 如果发送失败,就需要考虑如何降级 | 大部分业务场景 | 
| send(Message msg,MessageQueue mq) 指定队列发送 | 可以发送顺序消息 | 单点故障后不可用 | 适用于顺序消息 | 
| send(Message msg,MessageQueueSelectorselector, Object arg) 执行队列发送 | 队列选择方法最灵活 | 比较低级的接口,使用有门槛 | 特殊场景 | 
| sendOneway(Message msg) 单向发送 | 使用最方便 | 消息有丢失风险 | 适用于对消息丢失不敏感的场景 | 
| send(Collection 批量发送 | 效率最高 | 发送失败后降级比较困难 | 适用于特殊场景 | 
常用参数
| 参数名 | 含义 | 备注 | 
|---|---|---|
| producerGroup | 生产者组 | 必须传入的参数 | 
| compressMsgBodyOverHowmuch | 消息体数量超过该值则压缩消息 | |
| instanceName | 生产者实例名 | |
| maxMessageSize | 消息体的最大值 | 默认为4MB,也可以单独设置 | 
| retryTimesWhenSendAsyncFailed | 异步发送失败的重试次数 | |
| retryTimesWhenSendFailed | 同步发送失败的重试次数 | |
| sendMsgTimeout | 发送超时时间 | 网络层的超时时间 | 
《RocketMQ分布式消息中间件:核心原理与最佳实践_李伟 (作者) _电子工业出版社 (2020年7月1日)》
本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/17137156.html
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号