问题描述
我们目前不能依赖于向应用程序指定 Kafka 代理列表,因为它们是临时的 k8s pod,并且可以随时停止并使用更新的 IP 重新创建。虽然在连接到 Kafka 代理后出于某种原因,apache Camel Kafka 生产者库会保留代理的 IP,并尝试每次将数据发送到特定的 IP。因此,在 Kafka 代理节点上,这些 IP 已过时。
因此我们需要连接到 Zookeper(作为 k8s 服务,如 kafka-zookeper:2181
),它将提供有关活动代理节点的实际数据。但是 Apache Camel 文档现在没有 include zookeper url 连接详细信息。如何正确提供?
仅用 Zookeper 替换 brokers URL 无济于事:
kafka://ESP_01.Handle_Movement?brokers=localhost:2181
它导致以下堆栈跟踪:
0:29:11.092 [kafka-producer-network-thread | producer-1] DEBUG o.a.kafka.common.network.Selector - [Producer clientId=producer-1] Connection with localhost/127.0.0.1 disconnected
java.io.EOFException: null
at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:97)
at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:447)
at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:397)
at org.apache.kafka.common.network.Selector.attemptRead(Selector.java:678)
at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:580)
at org.apache.kafka.common.network.Selector.poll(Selector.java:485)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:544)
at org.apache.kafka.clients.NetworkClientUtils.awaitReady(NetworkClientUtils.java:74)
at org.apache.kafka.clients.producer.internals.Sender.awaitNodeReady(Sender.java:517)
at org.apache.kafka.clients.producer.internals.Sender.maybeSendAndPollTransactionalRequest(Sender.java:444)
at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:313)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:240)
at java.base/java.lang.Thread.run(Thread.java:835)
00:29:11.092 [kafka-producer-network-thread | producer-1] DEBUG o.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Node -1 disconnected.
00:29:11.092 [kafka-producer-network-thread | producer-1] WARN o.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Bootstrap broker localhost:2181 (id: -1 rack: null) disconnected
00:29:11.092 [kafka-producer-network-thread | producer-1] DEBUG o.a.k.c.producer.internals.Sender - [Producer clientId=producer-1] disconnect from null while trying to send request InitProducerIdRequestData(transactionalId=null,transactionTimeoutMs=2147483647,producerId=-1,producerEpoch=-1). Going to back off and retry.
那么Apache Camel Kafka 组件如何附加到zookeeper 以从中检索broker url?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)