Разбиение Kafka в SpringBoot

Я новичок в Кафке. Мне нужно написать простого производителя и потребителя для Kafka с помощью Spring Boot. На самом деле я перехожу с micronaut на Spring Boot. У меня проблема с разбиением темы. В micronaut я использую @KafkaKey для ключа раздела, как показано ниже:

public void process(@KafkaKey MyKey kafkaKey, @Body MyRecord myRecord) 

Что касается весны, я не знаю, как это сделать, потому что, как я вижу, класс KafkaTemplete имеет параметр раздела как объект Integer.

public ListenableFuture<SendResult<K, V>> send(String topic, Integer partition, K key, @Nullable V data) 

Итак, как я могу выполнить первую строку в Spring Boot?


person user1474111    schedule 25.09.2019    source источник


Ответы (1)


KafkaTemplate имеет разные методы отправки сообщений. Например:

  1. Отправьте данные в указанную тему с предоставленным ключом и без раздела

send(java.lang.String topic, K key, V data)

  1. Отправьте данные в указанную тему без ключа или раздела.

end(java.lang.String topic, V data)

Здесь вы можете выбрать наиболее подходящий способ: https://docs.spring.io/spring-kafka/api/org/springframework/kafka/core/KafkaTemplate.html

person Serge Harnyk    schedule 25.09.2019
comment
Большое спасибо, я думаю, что меня сбили с толку разделение на разделы и понятие ключа. - person user1474111; 25.09.2019
comment
Точно так же, как я могу использовать этот ключевой параметр в KafkaListener? - person user1474111; 26.09.2019
comment
Что-то вроде @KafkaListener(id = "qux", topicPattern = "myTopic1") public void listen(@Payload String foo, @Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) Integer key, @Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition, @Header(KafkaHeaders.RECEIVED_TOPIC) String topic) { ... } - person Serge Harnyk; 26.09.2019