深入理解 RocketMQ 4.x 生产者 SDK:从配置、原理到最佳实践
Apache RocketMQ 是一个分布式消息和流数据平台,以其低延迟、高吞吐、高可用和强大的消息堆积能力著称。其生产者(Producer)是消息发送的核心组件,理解其内部机制和最佳实践是构建稳定高效消息系统的关键。
一、核心配置详解
在初始化 DefaultMQProducer 时,一系列配置参数决定了其行为。理解这些参数是优化的第一步。
1. 必需配置
- namesrvAddr:NameServer 地址列表,格式 ip1:port;ip2:port;...。Producer 通过 NameServer 获取 Topic 路由信息(即消息应该发往哪个 Broker)。这是生产者必须设置的配置。
2. 核心可选配置(性能与可靠性权衡)
- producerGroup:生产者组名。事务消息必须设置组名,同一组内的生产者属于同一业务单元。
- sendMsgTimeout:发送超时,默认 3000ms。超时会抛出 RemotingTimeoutException。
- compressMsgBodyOverHowmuch:消息体自动压缩阈值(默认 4KB),超过阈值自动压缩(LZ4/Zlib)。
- retryTimesWhenSendFailed:同步发送失败后的重试次数,默认 2。
- retryTimesWhenSendAsyncFailed:异步发送失败后的重试次数,默认 2。
- retryAnotherBrokerWhenNotStoreOK:当 Broker 返回非 SEND_OK 状态时,是否重试另一个 Broker。
- maxMessageSize<