Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 8.2 API生成消息?_Java_Sockets_Maven_Apache Kafka - Fatal编程技术网

如何使用Java中的Kafka 8.2 API生成消息?

如何使用Java中的Kafka 8.2 API生成消息?,java,sockets,maven,apache-kafka,Java,Sockets,Maven,Apache Kafka,我正在尝试使用java中的kafka API。我使用以下maven依赖项: <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.8.2.0</version> </dependency> 到 在安装kafka服务器的同一台服务器上运

我正在尝试使用java中的kafka API。我使用以下maven依赖项:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>0.8.2.0</version>
</dependency>

在安装kafka服务器的同一台服务器上运行它,它可以工作,但我正在尝试远程使用它


感谢任何帮助,如果我能澄清,请让我知道

经过大量挖掘,我决定实现下面的示例:。我缩短了代码,没有实现分区器类。我用列出的依赖项更新了我的pom,但仍然存在相同的问题。最后,我做了一些配置更改,一切正常

拼图的最后一块是在服务器和客户机的/etc/hosts中定义Kafka服务器。我在两个文件中都添加了以下内容

172.xx.xx.xxx     serverHost1
同样,x只是面具。然后,我将server.properties文件中的advised.host.name设置为serverHost1。注意:我在服务器机器上运行ifconfig后获得了该IP

我换了线路

propsProducer.put("metadata.broker.list", "172.xx.xx.xxx:8080");

Kafka API不喜欢我将IP定义为字符串这一事实。相反,它从etc/hosts文件中查找IP,尽管文档中说:

主机名代理将向生产者和消费者播发。如果未设置,它将使用“host.name”的值(如果已配置)。否则,它将使用从java.net.InetAddress.getCanonicalHostName()返回的值


它将以字符串形式返回IP,我以前在客户机的etc/hosts中没有定义,否则它将返回与IP配对的名称(在我的示例中是serverHost1)。而且,我也从未设置过host.name的值

你真的在使用
172.xx.xx.xxx
作为主机IP地址吗?不,这是一个完整的IP地址,x只是掩码.Kk。也许是防火墙问题?是否可以使用netcat验证端口8080上的网络连接?已验证主机服务器计算机上的命令“nc-vz localhost 8080”成功netstat-plunt'还将端口发布为打开状态,并在所有接口上侦听。@BaronI很抱歉,我对Kafka的了解不够,无法在这一点上提供更多帮助。我偷看了一下文档,没有看到任何关于IP白名单之类的东西。也许明天我会想一些事情。bootstrap.servers是元数据.broker.list的替代品吗?是的,我想是的。在版本0.8.2.0中,字段是“metadata.broker.list”,但在较新的版本中是“boostrap.servers”是!!那是真的。对于新的ProducerAPI,这是新的配置。
ProducerRecord<byte[], byte[]> prMessage = new ProducerRecord<byte[],byte[]>(strTopic, strMessage.getBytes());

RecordMetadata futureData = m_kafkaProducer.send(prMessage).get();
propsProducer.put("bootstrap.servers", "172.xx.xx.xxx:8080");
propsProducer.put("bootstrap.servers", "127.0.0.1:8080");
172.xx.xx.xxx     serverHost1
propsProducer.put("metadata.broker.list", "172.xx.xx.xxx:8080");
propsProducer.put("metadata.broker.list", "serverHost1:8080");