Apache kafka ApacheKafka引发scala异常

Apache kafka ApacheKafka引发scala异常,apache-kafka,Apache Kafka,我试图编译并运行一个简单的kafka代码,它是Aapche中的一个示例。编译时,即使在为scala添加了所有lib文件之后,我也会遇到以下异常(我猜) 附件是图书馆文件的屏幕截图。 请告诉我错误/异常的原因 编辑:这是SimplePartitioner.java package kafkaTest; import kafka.producer.Partitioner; import kafka.utils.VerifiableProperties; public class SimplePa

我试图编译并运行一个简单的
kafka
代码,它是
Aapche
中的一个示例。编译时,即使在为
scala
添加了所有
lib
文件之后,我也会遇到以下异常(我猜)

附件是图书馆文件的屏幕截图。 请告诉我错误/异常的原因

编辑:这是
SimplePartitioner.java

package kafkaTest;

import kafka.producer.Partitioner;
import kafka.utils.VerifiableProperties;

public class SimplePartitioner implements Partitioner {
public SimplePartitioner(VerifiableProperties props) {
}

public int partition(Object key, int a_numPartitions) {
    int partition = 0;
    String stringKey = (String) key;
    int offset = stringKey.lastIndexOf('.');
    if (offset > 0) {
        partition = Integer.parseInt(stringKey.substring(offset + 1))
                % a_numPartitions;
    }
    return partition;
}
}

在您的经纪人列表末尾有一个空格:

props.put(“metadata.broker.list”,“broker1:9092,broker2:9092”)

拆下它,它应该可以正常工作,然后:


props.put(“metadata.broker.list”,“broker1:9092,broker2:9092”)

metadata.broker.list
有一个没有端口号的代理时,我也遇到了这个错误。

您是否也可以附加
SimplePartitioner
实现?没有分割部分对我来说很好,对你来说很好???你能再次提到编译运行的步骤和你使用过的JAR吗?对于meI使用的gradle for
org.apache.kafka:kafka_2.10:0.8.2.1
org.scala lang:scala library:2.10.4
依赖项,使用partitioner的代码也很好。你的代码是肯定的。一切都按预期工作,因此代码没有问题。我正在尝试另一个例子,它只是推高了日期。该代码无法获取元数据,尝试3次后失败,我不理解代码的代理部分。从
metadata.broker.list
属性,我基本上是说producer查看该地址。但我没有在任何地方指明那个地址。所以这就是我的方法,否则我就大错特错了。
package kafkaTest;

import java.util.*;

import kafka.javaapi.producer.Producer;
import kafka.producer.KeyedMessage;
import kafka.producer.ProducerConfig;

public class TestProducer {
public static void main(String[] args) {
    // long events = Long.parseLong(args[0]);

    long events = 10l;

    Random rnd = new Random();
    Properties props = new Properties();
    props.put("metadata.broker.list", "broker1:9092,broker2:9092 ");
    props.put("serializer.class", "kafka.serializer.StringEncoder");
    ***![props.put("partitioner.class", "kafkaTest.SimplePartitioner");][1]***//this is line no 23
    props.put("request.required.acks", "1");
    ProducerConfig config = new ProducerConfig(props);
    Producer<String, String> producer = new Producer<String, String>(config);

      for (long nEvents = 0; nEvents < events; nEvents++) { long runtime =
      new Date().getTime(); String ip = "192.168.2.1" + rnd.nextInt(255);
      String msg = runtime + ",www.example.com," + ip; KeyedMessage<String,
      String> data = new KeyedMessage<String, String>("page_visits", ip,
      msg); producer.send(data); }

    producer.close();
}
}
package kafkaTest;

import kafka.producer.Partitioner;
import kafka.utils.VerifiableProperties;

public class SimplePartitioner implements Partitioner {
public SimplePartitioner(VerifiableProperties props) {
}

public int partition(Object key, int a_numPartitions) {
    int partition = 0;
    String stringKey = (String) key;
    int offset = stringKey.lastIndexOf('.');
    if (offset > 0) {
        partition = Integer.parseInt(stringKey.substring(offset + 1))
                % a_numPartitions;
    }
    return partition;
}
}