#java #spring #apache-kafka
#java #spring #apache-kafka
Вопрос:
У меня есть общее Message<>
сообщение, отправленное через шаблон Kafka (kafkaTemplate.send(topic, message))
, но на стороне потребителя у меня такая ошибка при обработке отправленного сообщения:
there is no default constructor available in 'org.springframework.messaging.support.GenericMessage'
Как я могу его добавить и почему я должен это делать? Я думал, что это должно работать из коробки?
public void publishEvent(Event createdEvent) {
String topic = structureTask.getType();
Message<TaskCreatedEvent> message = MessageBuilder.withPayload(
TaskCreatedEvent.builder().taskId(createdEvent.getId()).build()).build();
ListenableFuture<SendResult<String, Message<?>>> future = kafkaTemplate.send(topic, message);
future.addCallback(new ListenableFutureCallback<>() {
@Override
public void onSuccess(SendResult<String, Message<?>> result) {
log.debug("Sent {} with offset={}", message, result.getRecordMetadata().offset());
}
@Override
public void onFailure(Throwable ex) {
log.debug("Unable to send {} due to: {}", message, ex.getMessage());
}
});
}
Комментарии:
1. Можете ли вы предоставить подробную информацию о коде? 🙂
2. Конечно, сообщение<Событие> message = MessageBuilder.withPayload(Event.builder().id(event.getId()).build()).build(); ListenableFuture<SendResult<Строка, сообщение<?>>> future = KafkaTemplate.send(ТЕМА, сообщение);
3. как исключение:
Event
у DTO нет конструктора по умолчанию. Можете ли вы указать код события?4. Поскольку для отправки сообщения в kafka, kafkatemplate преобразует универсальный класс с помощью отражения, также требуется
Event
наличие конструктора по умолчанию. Вы пытаетесь добавить конструктор по умолчанию для решения проблемы?5. Не могли бы вы дополнить свой вопрос примерами кода?