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

Spring Cloud Kafka Stream对接Azure Event Hub报错:无法连接本地Broker

问题原因分析

你的代码尝试连接本地Kafka Broker(localhost:9092),核心原因有两点:

  1. 依赖选型错误:你引入了spring-cloud-stream-binder-kafka(标准Kafka绑定器),但Azure Event Hub需要使用Azure官方提供的Event Hub Kafka兼容绑定器,而非普通Kafka绑定器。
  2. 配置不匹配:标准Kafka绑定器不会读取spring.cloud.azure.eventhubs.connection-string配置,它默认会尝试连接本地Kafka服务,因此出现了连接localhost的错误。
修复步骤

1. 调整项目依赖

移除普通Kafka绑定器和Spring Kafka依赖,替换为Azure Event Hub的Spring Cloud Stream绑定器:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-eventhubs-kafka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream</artifactId>
    </dependency>
</dependencies>

说明:spring-cloud-azure-starter-eventhubs-kafka已包含Spring Cloud Stream与Azure Event Hub Kafka兼容所需的全部依赖,无需再单独引入普通Kafka绑定器或Spring Kafka。

2. 完善配置文件

补充Azure Event Hub的Kafka兼容配置,让绑定器正确指向Azure服务:

# 替换为你的完整Azure Event Hub连接字符串
spring.cloud.azure.eventhubs.connection-string=Endpoint=sb://<你的命名空间>.servicebus.windows.net/;SharedAccessKeyName=<你的访问策略名>;SharedAccessKey=<你的访问密钥>
# Spring Cloud Function定义
spring.cloud.function.definition=consume;supply
# 指定使用Azure Event Hub Kafka绑定器
spring.cloud.stream.default-binder=eventhubs-kafka
# 输入输出绑定配置
spring.cloud.stream.bindings.consume-in-0.destination=demo
spring.cloud.stream.bindings.consume-in-0.group=$Default
spring.cloud.stream.bindings.supply-out-0.destination=demo
# Kafka客户端兼容配置(Azure Event Hub必填)
spring.cloud.stream.eventhubs-kafka.binder.configuration.bootstrap.servers=<你的命名空间>.servicebus.windows.net:9093
spring.cloud.stream.eventhubs-kafka.binder.configuration.sasl.mechanism=PLAIN
spring.cloud.stream.eventhubs-kafka.binder.configuration.security.protocol=SASL_SSL
spring.cloud.stream.eventhubs-kafka.binder.configuration.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${spring.cloud.azure.eventhubs.connection-string}";

注意:请将<你的命名空间>、<你的访问策略名>、<你的访问密钥>替换为你Azure Event Hub实例的实际信息。

3. 核心代码无需修改

你基于Spring Cloud Function编写的Supplier、Consumer和发送接口是标准实现,无需调整,修复依赖和配置后即可正常工作。

验证

启动应用后,调用/send?content=test接口,查看日志:

  • 生产者日志应输出Manually sending message相关内容
  • 消费者日志应输出New message received: 'test'
    确认以上日志出现,即表示收发功能正常。

内容的提问来源于stack exchange,提问作者Kris Swat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:58:22