Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Kafka使用者无法读取任何主题记录_Java_Docker_Apache Kafka - Fatal编程技术网

Java Kafka使用者无法读取任何主题记录

Java Kafka使用者无法读取任何主题记录,java,docker,apache-kafka,Java,Docker,Apache Kafka,我曾尝试通过Docker在本地环境中创建多个卡夫卡经纪人。我能够在一个终端窗口中启动生产者,并在另一个终端窗口中启动消费者时接收消息。为此,我运行: ./start-kafka-shell.sh <my public ip> 10.224.49.140:2181 消费者: $KAFKA_HOME/bin/kafka-console-consumer.sh --topic=topic --zookeeper=$ZK 现在,我正在本地环境中编写一个Java使用者,并尝试连接到通过Do

我曾尝试通过Docker在本地环境中创建多个卡夫卡经纪人。我能够在一个终端窗口中启动生产者,并在另一个终端窗口中启动消费者时接收消息。为此,我运行:

./start-kafka-shell.sh <my public ip> 10.224.49.140:2181
消费者:

$KAFKA_HOME/bin/kafka-console-consumer.sh --topic=topic --zookeeper=$ZK
现在,我正在本地环境中编写一个Java使用者,并尝试连接到通过Docker公开的Kafka端口。以下是Java配置:

    Properties props = new Properties();
    props.put("bootstrap.servers", "<my public IP>:9092");
    props.put("group.id", "test-consumer-group");
    props.put("key.deserializer", StringDeserializer.class.getName());
    props.put("value.deserializer", StringDeserializer.class.getName());
    SimpleConsumer consumer = new SimpleConsumer(props, 
    Arrays.asList("topics"));
我相信这是一个“找不到协调器”的问题,因为我在逐行检查代码时浏览了代码——但我再也找不到我怀疑导致该问题的代码了。我似乎也无法在我的应用程序中启用信息级别的日志,仍然在努力解决这个问题

我使用的是卡夫卡0.9.0客户端(org.apache.Kafka-Kafka-clients,版本0.9.0.1),我可以合理地确定教程也使用了卡夫卡0.9.0

任何人以前都有这个问题,或者可以告诉我协调员和/或配置缺少什么?如果我的应用程序是唯一运行的使用者,为什么它在查找协调器时会出现问题

如果有人给我指点,我将不胜感激。谢谢

编辑#1: 在cricket_007的回应之后,我遵循了Confluent Docker quickstart,但我仍然遇到了麻烦:

获取相关id为6的元数据时出错:{mytopic=LEADER\u NOT\u AVAILABLE}

我已尝试更改
播发的.host.name
播发的.port
。还是不走运。我试试Docker机器

编辑#2:

我安装了Docker Machine,但在运行它之前,注意到以下日志:


[2018-06-23 15:12:26497]信息创建/brokers/ids/0(是否安全?错误)(kafka.zk.KafkaZkClient)
[2018-06-23 15:12:26501]在/brokers/ids/0上创建znode的信息结果是:OK(kafka.zk.KafkaZkClient)
[2018-06-23 15:12:26503]信息注册代理0,路径为/brokers/ids/0,地址为:ArrayBuffer(端点(127.0.0.19092,ListenerName(明文),明文))(kafka.zk.KafkaZkClient)
....
[2018-06-23 15:13:01657]错误[KafkaApi-0]活动代理的数量“0”不符合偏移主题所需的复制因子“1”(通过“offset.topic.replication.factor”配置)。如果集群正在启动,但并非所有代理都已启动,则可以忽略此错误。(kafka.server.KafkaApis)


现在我很困惑。听起来id=0的代理实际上已经启动并注册了。那么,为什么会抛出上面的错误呢

你为什么要用卡夫卡的老版本?我的建议是看看汇合码头快速启动。。。没有理由从多个代理开始,因为一台计算机一次只能处理这么多数据,而不管是否有容器是的,我想知道为什么教程使用了这么旧的版本。谢谢你的建议。我已切换到使用Confluent Docker quickstart,但仍然遇到问题:
获取相关id为6的元数据时出错:{mytopic=LEADER\u NOT\u AVAILABLE}
我已尝试更改advised.host.name和advised.port。还是不走运。有什么想法吗?这可能是docker网络的问题。你能把你的问题包括进来吗?另外,我相信如果在Mac或Windows上运行,建议使用Docker机器
    Properties props = new Properties();
    props.put("bootstrap.servers", "<my public IP>:9092");
    props.put("group.id", "test-consumer-group");
    props.put("key.deserializer", StringDeserializer.class.getName());
    props.put("value.deserializer", StringDeserializer.class.getName());
    SimpleConsumer consumer = new SimpleConsumer(props, 
    Arrays.asList("topics"));
[main] INFO org.apache.kafka.clients.consumer.ConsumerConfig - 
ConsumerConfig values: 
metric.reporters = []
metadata.max.age.ms = 300000
value.deserializer = class org.apache.kafka.common.serialization.StringDeserializer
group.id = test-consumer-group
partition.assignment.strategy = [org.apache.kafka.clients.consumer.RangeAssignor]
reconnect.backoff.ms = 50
sasl.kerberos.ticket.renew.window.factor = 0.8
max.partition.fetch.bytes = 1048576
bootstrap.servers = [10.224.49.140:9092]
retry.backoff.ms = 100
sasl.kerberos.kinit.cmd = /usr/bin/kinit
sasl.kerberos.service.name = null
sasl.kerberos.ticket.renew.jitter = 0.05
ssl.keystore.type = JKS
ssl.trustmanager.algorithm = PKIX
enable.auto.commit = true
ssl.key.password = null
fetch.max.wait.ms = 500
sasl.kerberos.min.time.before.relogin = 60000
connections.max.idle.ms = 540000
ssl.truststore.password = null
session.timeout.ms = 30000
metrics.num.samples = 2
client.id = 
ssl.endpoint.identification.algorithm = null
key.deserializer = class 
org.apache.kafka.common.serialization.StringDeserializer
ssl.protocol = TLS
check.crcs = true
request.timeout.ms = 40000
ssl.provider = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
ssl.keystore.location = null
heartbeat.interval.ms = 3000
auto.commit.interval.ms = 5000
receive.buffer.bytes = 32768
ssl.cipher.suites = null
ssl.truststore.type = JKS
security.protocol = PLAINTEXT
ssl.truststore.location = null
ssl.keystore.password = null
ssl.keymanager.algorithm = SunX509
metrics.sample.window.ms = 30000
fetch.min.bytes = 1
send.buffer.bytes = 131072
auto.offset.reset = latest

Listening to topics...
[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version 
: 0.9.0.1
[main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId 
: 23c69d62a0cabf06