Как правильно отправлять сообщения из Java Springboot в кафку?
Вопрос такой . При обращении к сервису я получаю тело ответа. Мне нужно его переслать в существующий топик кафки. Пока натолкнулся лишь на примеры создания класса продюсера , в котором нужно определить все поля соответствующие тому сообщению, которое я хочу послать в топик кафки. Но в моем случае это примерно сотня полей, разной степени вложенности. Могу ли я как то просто взять тело ответа и строкой отправить топик кафки, не создавая никаких дополнительных классов ?
На данный момент application.yml выглядит так :
events:
enabled: true
kafka.url: ......
produces:
- package bft.com.needy_registry.kafka.events.FamilyRequestScmzToRpuEvent
kafka:
idempotency-enabled: false
Могу ли я не определять в application.yml поле produces а просто послать сообщение в нужный топик?
Ответы (1 шт):
Для начало нужно определить пару бинов
@Bean
public ProducerFactory<UUID, String> producerFactory() {
return new DefaultKafkaProducerFactory<>(
properties.buildProducerProperties(),
new UUIDSerializer(),
new StringSerializer()
);
}
@Bean
public KafkaTemplate<UUID, String> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}
Затем в нужном месте инжектим темплейт
@Qualifier("kafkaTemplate")
private final KafkaTemplate<UUID, Strin> kafkaTemplate;
и посылаем сообщение
List<Header> headers = new ArrayList<>();
ProducerRecord<UUID, String> record = new ProducerRecord<>(topicName, null, messageId, message, headers);
kafkaTemplate.send(record);