Java 使用卡夫卡中的实时消息

Java 使用卡夫卡中的实时消息,java,apache-kafka,kafka-consumer-api,kafka-producer-api,Java,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,我已经启动了我的zookeeper和Kafka服务器。 我开始制作卡夫卡,它发送10条主题为“xxx”的消息。然后阻止了我的卡夫卡制作人。 现在我开始使用卡夫卡,并订阅了主题“xxx”。我的消费者使用我的卡夫卡制作人发送的10条消息,这10条消息现在没有运行。 我需要我的Kafka使用者只能使用来自运行Kafka服务器的消息。 有没有办法做到这一点? 以下是我的消费者财产 props.put("bootstrap.servers", "localhost:9092"); String c

我已经启动了我的zookeeper和Kafka服务器。 我开始制作卡夫卡,它发送10条主题为“xxx”的消息。然后阻止了我的卡夫卡制作人。 现在我开始使用卡夫卡,并订阅了主题“xxx”。我的消费者使用我的卡夫卡制作人发送的10条消息,这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");

设置以下属性:

consumerProps.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
它告诉使用者只读取最新的消息,即使用者启动后发布的消息。

请创建一个新主题,并将属性ConsumerConfig.AUTO\u OFFSET\u RESET\u CONFIG保留为“latest”。确保不提交偏移量。 i、 e我们不应该使用commitSync()

默认情况下,接收方开始使用每个分配分区的上次提交偏移量的记录。如果提交的偏移量不可用,则使用为KafkaConsumer配置的偏移量重置策略ConsumerConfig#AUTO_offset _reset_CONFIG将开始偏移量设置为分区上的最早或最新偏移量


我认为在您的情况下,您正在提交偏移量,或者给定主题有一个可用的committ offset。

您可以丢弃任何正在等待的消息,只接收在程序启动后到达的消息。Kafka旨在持久化消息(您使用Kafka是因为您需要此功能),如果您只需要非持久性消息,那么任何其他消息传递解决方案都可能是更好的选择。是否有任何标志来标识等待了很长时间的消息?删除此属性
props.put(“auto.offset.reset”,“earlime”),与ConsumerConfig.AUTO\u OFFSET\u RESET\u CONFIG相同。仅保留最新属性。是“AUTO.OFFSET.RESET”与ConsumerConfig.AUTO\u OFFSET\u RESET\u CONFIG相同。我做到了。现在我的属性包含“auto.offset.reset”、“latest”。仍然存在相同的问题。我的最终消费者道具:bootstrap.servers=localhost:9092 group.id=cg1 enable.auto.commit=true auto.offset.reset=latest auto.commit.interval.ms=100 heartbeat.interval.ms=3000 session.timeout.ms=30000 key.deserializer=org.apache.kafka.common.serialization.StringDeserializer.StringDeserializervalue.deserializer=org.apache.kafka.common.serialization.ByteArraydeSerialization为我的使用者提供的属性。我仍然收到非实时制作人的数据。您使用的是哪个卡夫卡api版本?我使用的依赖项如下。此外,我还更新了我的问题中的消费者属性。ch.qos.logback logback classic 1.0.13 org.apache.kafka kafka客户端0.9.0.0 org.apache.avro avro 1.7.7