Java 卡夫卡-如何检查消费者是否还活着,如果没有,如何将消费者恢复到运行状态?
我目前正在从事一个卡夫卡java项目。我是新手,我发现很难理解卡夫卡制作人/消费者设计的一些基本概念Java 卡夫卡-如何检查消费者是否还活着,如果没有,如何将消费者恢复到运行状态?,java,apache-kafka,kafka-consumer-api,Java,Apache Kafka,Kafka Consumer Api,我目前正在从事一个卡夫卡java项目。我是新手,我发现很难理解卡夫卡制作人/消费者设计的一些基本概念 比如说,我有一个单一分区的主题,我有一个制作人在写它,一个消费者在消费这个主题。如果我部署同一应用程序的多个实例,每个实例将运行自己的使用者。在这种情况下,由于所有使用者都属于同一个groupId,消息是否会在多个实例上运行的使用者之间平均分布 如何从应用程序中定期检查消费者是否还活着 如果一个/所有消费者出现故障,如何重新启动/使其恢复运行状态 在java中实现长时间运行的使用者的最佳方法是什
Properties props = new Properties();
props.setProperty("bootstrap.servers", "localhost:9091");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
AdminClient client = org.apache.kafka.clients.admin.AdminClient.create(props);
ListConsumerGroupOffsetsResult offsets = client.listConsumerGroupOffsets("consumerId");
Map<TopicPartition, OffsetAndMetadata> tt = offsets.partitionsToOffsetAndMetadata().get();
ListConsumerGroupOffsetsResult offsets = client.listConsumerGroupOffsets(consumerId);
Map<TopicPartition, OffsetAndMetadata> tt = offsets.partitionsToOffsetAndMetadata().get();
for (Entry<TopicPartition, OffsetAndMetadata> entry : tt.entrySet()) {TopicPartition tp = entry.getKey();
OffsetAndMetadata op = entry.getValue();
Collections.singletonList(tp);
consumer.assign(Collections.singletonList(tp));
consumer.seekToEnd(Collections.singletonList(tp));
System.out.println(consumerId + "," + tp.partition() + "," + consumer.position(tp) + ","
+ op.offset() + "," + (consumer.position(tp) - op.offset()));
}
Properties=newproperties();
setProperty(“bootstrap.servers”,“localhost:9091”);
卡夫卡消费者=新卡夫卡消费者(道具);
AdminClient=org.apache.kafka.clients.admin.AdminClient.create(props);
ListConsumerGroupOffsetsResult offsets=client.listConsumerGroupOffsets(“consumerId”);
Map tt=offsets.partitionsToOffsetAndMetadata().get();
ListConsumerGroupOffsetsResult offsets=client.listConsumerGroupOffsets(consumerId);
Map tt=offsets.partitionsToOffsetAndMetadata().get();
for(Entry:tt.entrySet()){TopicPartition tp=Entry.getKey();
OffsetAndMetadata op=entry.getValue();
收藏。单音列表(tp);
consumer.assign(Collections.singletonList(tp));
consumer.seekToEnd(Collections.singletonList(tp));
System.out.println(consumerId+”,“+tp.partition()+”,“+consumer.position(tp)+”,”
+op.offset()+”,“+(consumer.position(tp)-op.offset());
}
嗨,谢谢你的回复。如何检查消费者在任何时间点是否还活着?。在消费者情绪低落后,如何让他们恢复活力?你说的“活着”是什么意思?