本地Kafka通过Mirror Maker同步至Azure Event Hub连接超时求助
从你的错误日志和配置细节来看,最直接的问题是你启动kafka-console-producer时没有加载自定义的生产者配置文件,导致客户端完全没应用SASL_SSL认证规则,无法通过Event Hub的身份验证,进而连接被直接断开引发EOFException,最终导致元数据更新超时。
第一步:修正控制台生产者启动命令
你的配置文件里已经包含了Event Hub必需的SASL认证和SSL配置,但当前启动命令没有指定加载这个文件,生产者默认用PLAINTEXT方式连接,根本无法和要求SASL_SSL的9093端口建立有效连接。
修正后的启动命令需要加上--producer-config参数指定配置文件路径:
kafka-console-producer.bat --broker-list dev-we-eh-feed.servicebus.windows.net:9093 --topic dev-eh-kafka-test --producer-config path/to/your/producer.config
第二步:排查其他潜在问题
如果修正命令后仍然报错,逐一检查以下内容:
1. 验证SASL JAAS配置的正确性
确认你的sasl.jaas.config格式完全合规:
username必须是字面量"$ConnectionString",不要替换成实际的连接字符串片段password是完整的Event Hub命名空间连接字符串,确保没有多余空格、引号或特殊字符转义错误- 配置结尾的分号不能遗漏
正确格式示例:
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://dev-we-eh-feed.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=*****";
2. 检查客户端版本兼容性
你使用的Kafka 1.1.1/Confluent 4.1.3是支持Event Hub的,但要确保客户端依赖没有冲突。如果后续配置Mirror Maker,需同步确认Mirror Maker的生产者配置段完全复用这些SASL/SSL参数。
3. 测试网络连通性
确认你的机器可以正常访问Event Hub的9093端口:
- 用
telnet dev-we-eh-feed.servicebus.windows.net 9093测试端口是否可达 - 用
openssl s_client -connect dev-we-eh-feed.servicebus.windows.net:9093测试SSL握手是否正常完成,如果握手失败,可能是默认根证书未被客户端信任(后续你计划用自定义证书,当前先确保系统默认证书池能覆盖Azure的CA证书)
4. 确认Event Hub名称匹配
确保你创建的Event Hub名称dev-eh-kafka-test和生产者指定的topic名称完全一致(Kafka topic名称大小写敏感,Event Hub的Kafka兼容模式也遵循此规则)。
针对Mirror Maker的额外配置提示
当控制台生产者测试通过后,配置Mirror Maker时要确保生产者部分的配置和测试用的生产者配置完全对齐,参数需要加上producer.*前缀,例如:
producer.bootstrap.servers=dev-we-eh-feed.servicebus.windows.net:9093 producer.sasl.mechanism=PLAIN producer.security.protocol=SASL_SSL producer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="你的完整连接字符串";
内容的提问来源于stack exchange,提问作者FEST

