我希望有人可以解释我的问题。
我正在对我建立的微服务进行一系列REST调用。当服务接收到调用时,它会将一些数据保存到数据库,然后将消息发布到Kafka主题。
我正在尝试编写一个进行REST调用的测试,然后使用来自Kafka主题的消息。
当我的测试试图从Kafka消费时,它似乎没有消耗最新消息。
我使用了Kafka附带的kafka-consumer-groups.sh shell脚本来描述我的消费者的状态。这是它的样子:
bash-4.3# ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group test
Note: This will only show information about consumers that use the Java consumer API (non-ZooKeeper-based consumers).
Consumer group 'test' has no active members.
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
test_topic 0 42 43 1 - - -
注意滞后1.这似乎是我的问题。
这是我的Kafka消费者代码:
public void consumeMessages() {
Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
props.put(ConsumerConfig.GROUP_ID_CONFIG, "test");
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
try (KafkaConsumer < String, String > kafkaConsumer = new KafkaConsumer < > (props)) {
kafkaConsumer.subscribe(Collections.singletonList("test_topic"));
ConsumerRecords < String, String > consumerRecords = kafkaConsumer.poll(5000);
for (ConsumerRecord < String, String > consumerRecord: consumerRecords) {
System.out.printf("offset = %d, message = %s%n", consumerRecord.offset(), consumerRecord.value());
}
}
}
任何帮助都将受到极大的欢迎。
谢谢,
Ben:)