java - 带有 ssl 的 Spring kafka,生产者错误“重复键”
问题描述
我有一个带 SSL 的 Kafka 服务器。向其生成消息时,会发生错误:
2020-05-29 19:19:27.677 [kafka-producer-network-thread | producer-1] ERROR o.a.k.c.producer.internals.Sender - [Producer clientId=producer-1] Uncaught error in kafka producer I/O thread:
java.lang.IllegalStateException: Duplicate key host:9091 (id: 1 rack: null)
at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)
at java.util.HashMap.merge(HashMap.java:1254)
at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)
我对它暗示的“重复键”感到困惑。我的配置application.properties
:
spring.kafka.bootstrap-servers=host:9091
spring.kafka.properties.security.protocol=SSL
spring.kafka.ssl.trust-store-password=kafka
spring.kafka.properties.ssl.endpoint.identification.algorithm=
spring.kafka.ssl.key-store-password=abc
spring.kafka.ssl.trust-store-location=file:/path/client.truststore.jks
spring.kafka.ssl.key-store-location=file:/path/client.keystore.jks
Kafka生产者在运行时从日志中的部分配置:
acks = 1
bootstrap.servers = [host:9091]
client.dns.lookup = default
client.id =
enable.idempotence = false
interceptor.classes = []
key.serializer = class org.apache.kafka.common.serialization.StringSerializer
linger.ms = 0
partitioner.class = class org.apache.kafka.clients.producer.internals.DefaultPartitioner
security.protocol = SSL
ssl.cipher.suites = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
ssl.endpoint.identification.algorithm =
ssl.key.password = null
ssl.keymanager.algorithm = SunX509
ssl.keystore.location = /path/client.keystore.jks
ssl.keystore.password = [hidden]
ssl.keystore.type = JKS
ssl.protocol = TLS
ssl.provider = null
ssl.secure.random.implementation = null
ssl.trustmanager.algorithm = PKIX
ssl.truststore.location = /path/client.truststore.jks
ssl.truststore.password = [hidden]
ssl.truststore.type = JKS
transactional.id = null
value.serializer = class org.apache.kafka.common.serialization.StringSerializer
有什么问题吗?任何帮助将不胜感激。
根据本文档中的表格,我想到版本可能不兼容。我的版本:
spring-boot: 2.2.6.RELEASE
spring-kafka: 2.3.7.RELEASE
Kafka server: 0.10.1.1
但是,通过使用当前版本,我能够在没有 SSL 的情况下从 Kafka 服务器(0.10.0.0)成功地生产和消费。
解决方案
推荐阅读
- python - 如何找到与创建实例相关的 AST 分配节点?
- java - 执行使用 jpackage 制作的 .exe 时出现“无法启动 JVM”错误是什么意思?
- visual-studio-code - SSH 不会 bash 进入配置文件,因此没有权限 mkdir 用于 vscode 远程 ssh
- php - 我正在尝试将表单提交发送到我的电子邮件
- react-native - 如何在 React Native 应用程序中使用tipsi-stripe createSourceWithParams 创建一次性源
- android - 为什么 binding.myTextView 返回一个 TextView?而不是 TextView
- azure - MS Graph API 管理
- javascript - 基于先前令牌的建议(摩纳哥编辑器自定义语言)
- javascript - 如何查找特定对象是否存在于数组中?
- php - 带有变体和自定义产品插件的 Wordpress WooCommerce 添加到购物车按钮问题