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 fororg.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;
}
}