在Kafka中使用实时消息

时间:2016-09-30 09:41:07

标签: java apache-kafka kafka-consumer-api kafka-producer-api

我已经启动了我的zookeeper和Kafka服务器。 我创建了我的Kafka制作人,发送了10条主题为“xxx”的消息。然后停止了我的卡夫卡制片人。 现在我开始了我的Kafka消费者并订阅主题'xxx'。我的消费者消费我的Kafka制作人发送的10条消息,这些消息现在没有运行。 我需要我的Kafka消费者应该只使用运行Kafka服务器的消息。 有没有办法实现这个目标? 关注我的消费者属性。

props.put("bootstrap.servers", "localhost:9092");
    String consumeGroup = "cg1";
    props.put("group.id", consumeGroup);
    props.put("enable.auto.commit", "true");
    props.put("auto.offset.reset", "earliest");
    props.put("auto.commit.interval.ms", "100");
    props.put("heartbeat.interval.ms", "3000");
    props.put("session.timeout.ms", "30000");
    props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
    props.put("value.deserializer", "org.apache.kafka.common.serialization.ByteArrayDeserializer");
    props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");

2 个答案:

答案 0 :(得分:1)

设置以下属性:

consumerProps.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");

它告诉消费者只读取最新消息,即消费者启动后发布的消息。

答案 1 :(得分:0)

请创建一个新主题,并将ConsumerConfig.AUTO_OFFSET_RESET_CONFIG属性保持为“最新”。确保不提交偏移量。 即我们不应使用commitSync()

默认情况下,接收者从每个分配分区的最后提交的偏移量开始使用记录。如果没有可用的偏移量,则为KafkaConsumer配置的偏移量重置策略ConsumerConfig#AUTO_OFFSET_RESET_CONFIG用于将起始偏移量设置为分区上的最早或最新偏移量。

我认为在您的情况下,您正在提交偏移量或对于给定主题存在可用的偏移量。