更新时间:2025-09-25 GMT+08:00
分享

配置RocketMQ客户端

本章节介绍RocketMQ客户端的配置建议。

Java客户端版本

Java客户端版本建议使用5.1.4及以上版本。

避免ClientId相同

客户端的ClientId默认为进程号、本机IP、instanceName进行组合。如果同一个进程内,一个消费组下启动两个消费者,则会导致两者ClientId相同,从而出现有的队列重复消费、有的队列无法消费的情况。

配置建议

由于ClientId生成时会拼接消费者的clientIP属性,同一 IP下不同消费者的clientIP相同会导致ClientId相同,所以建议添加如下代码手动设置instanceName。
consumer.setInstanceName(String.valueOf(System.nanoTime()))

开启生产者异常检测机制

Java客户端5.1.4及以上版本才支持该功能。

建议客户端开启异常检测机制,当客户端连接Broker超时后,能快速剔除超时的Broker,使生产的消息到其他Broker。

producer.setSendLatencyFaultEnable(true)

生产者重试的错误码增加SYSTEM_BUSY

建议生产者配置重试的错误码,当Broker出现写盘繁忙、主备倒换等异常,导致返回SYSTEM_BUSY时,可重试发送消息到其他正常的Broker,减小业务影响。
producer.addRetryResponseCode(ResponseCode.SYSTEM_BUSY);

仅4.9.2版本及以上的客户端才支持使用addRetryResponseCode函数。需要注意的是,5.2.1及以上版本的客户端已默认增加SYSTEM_BUSY,无需再额外添加。

相关文档