如何使 Apache Camel Kafka 组件与仅通过 Zookeper 公开的代理一起工作

问题描述

我们目前不能依赖于向应用程序指定 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 (将#修改为@)