You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Kafka从单broker接收消息转发至另一broker失败问题咨询

问题根因

你自定义了指向9093 broker的KafkaTemplate实例forwarderKafkaClient,但业务代码中实际注入使用的是Spring Boot自动装配的默认KafkaTemplate。默认KafkaTemplate会复用全局Kafka配置的bootstrap地址,因此始终将消息发送到9092端口。

解决方案

第一步:指定注入自定义的KafkaTemplate

你定义的forwarderKafkaClient方法名即为该Bean的默认名称,在业务类注入KafkaTemplate时,添加@Qualifier注解指定该Bean名称即可:

// 原有注入模板的代码修改为如下形式
@Autowired
@Qualifier("forwarderKafkaClient")
private KafkaTemplate<String, AuditLog> template;

第二步:(可选)关闭默认Kafka自动装配

如果项目中不需要使用Spring Boot默认提供的Kafka相关实例,可以在启动类上排除Kafka自动配置类,避免出现多实例混淆问题:

@SpringBootApplication(exclude = {KafkaAutoConfiguration.class})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

验证方法

注入完成后可通过如下代码确认模板配置的目标broker地址是否正确:

Map<String, Object> configs = ((DefaultKafkaProducerFactory<String, AuditLog>) template.getProducerFactory()).getConfigurationProperties();
System.out.println(configs.get(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG));

输出结果为127.0.0.1:9093即代表配置生效。


内容的提问来源于stack exchange,提问作者halil ibrahim binol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:06:02