java实现kafka消费者为什么要手动启动一下才能接受数据? 怎样能实现Tomcat 启动完毕 去执行一次 消费者
public void customer(){
String json = “”;
try {
Properties properties = new Properties();
properties.put(“zookeeper.connect”, “localhost:2181”);
properties.put(“metadata.broker.list”, “localhost:9092”);
properties.put(“auto.commit.enable”, “true”);
properties.put(“auto.commit.interval.ms”, “60000”);
//properties.put(“group.id”, “TCAPTOPIS”);
properties.put(“group.id”, “s0”);
ConsumerConfig consumerConfig = new ConsumerConfig(properties);
ConsumerConnector javaConsumerConnector = Consumer.createJavaConsumerConnector(consumerConfig);
// topic的过滤器TCAPTOPIS
Whitelist whitelist = new Whitelist(“s0”);
List<KafkaStream<byte[], byte[]>> partitions = javaConsumerConnector
.createMessageStreamsByFilter(whitelist);
if (partitions == null) {
TimeUnit.SECONDS.sleep(1);
}
// 消费消息
for (KafkaStream<byte[], byte[]> partition : partitions) {
ConsumerIterator<byte[], byte[]> iterator = partition.iterator();
System.out.println(iterator.hasNext());
while (iterator.hasNext()) {
MessageAndMetadata<byte[], byte[]> next = iterator.next();
json = new String(next.message(), “UTF-8”);
syso(json);
}
}
}