我试图整合kafka-storm。我刚开始时只有几个例子。
我能够从GitHub运行示例。接下来我试图在eclipse中编写一个Producer类,使用KAFKA PRODUCER API将消息发布到kafka主题。
Scenario1:
当我的consumer-shell使用say topic test运行时,测试我运行我的生产者类。我能够看到我的所有已发布消息的消费者shell。
Scenario2
我还没有启动我的消费者shell(说消费者已经失败)。我运行我的制作类。这些消息将发布到kafka。
现在,如果消息已发布,并且现在在停机后如果我启动了我的消费者shell,它就不会阅读已发布的消息主题。
为什么呢?我想它维护主题消费的日志。难道不是在阅读消息吗?
我需要提一下配置参数吗?
Properties props = new Properties();
props.put("metadata.broker.list", "localhost:9092");
props.put("zk.connect", "localhost:2181");
props.put("serializer.class", "kafka.serializer.StringEncoder");
props.put("request.required.acks", "1");
ProducerConfig config = new ProducerConfig(props);
Producer<String, String> producer = new Producer<String, String>(config);
for ( int nEvents=0; nEvents<events;nEvents++)
{
String ip="192.168.2."+rnd.nextInt(255);
String msg=getNextTradeData(); // Class to generate data
KeyedMessage<String,String> data=new KeyedMessage<String, String>("TradeFrequency",ip,msg);
Thread.sleep(100);
System.out.println(msg);
producer.send(data);
}
producer.close();
}
或者我需要做些什么来改变消费者。我正在使用包中提供的consumer-shell,并使用
启动它 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic first-topic
答案 0 :(得分:1)
当您启动kafka-console-consume
时,它将从当前偏移量中读取。这是偏移NOW()
,而不是过去。
要查看邮件是否已发布,您有两种选择:
使用--from-beginning
选项,从主题的开头读取
bin / kafka-console-consumer.sh --zookeeper localhost:2181 - topic first topic - from-beginning
使用--consumer.config
选项
bin / kafka-console-consumer.sh --zookeeper localhost:2181 - topic first topic --consumer.config /home/sql-injection/consumer-config.txt
根据此nice page,您在消费者配置中需要的参数是:consumer.id
,client.id
。