@Bean
public ConsumerFactory<String,String> consumerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
configProps.put(ConsumerConfig.GROUP_ID_CONFIG, UUID.randomUUID().toString());
configProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
configProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
configProps.put("auto.offset.reset", "earliest");
return new DefaultKafkaConsumerFactory<>(configProps);
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, String>kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, String>
factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
return factory;
}
@Bean
public Receiver receiver(){
return new Receiver();
}
**Receiver class :**
public class Receiver {
@KafkaListener(topics = "topicname")
public void listen(String message) {System.out.println("Kakfa Listener received message " + message);
}
}
Проблема в том, что аргумент "String message" выдает мне только сообщение, а не ключ, соответствующий сообщению Kafka.Я хотел бы получить как ключ, так и сообщение.Пожалуйста, ответьте, если есть способ получить значение ключа.