Отправить сообщение amqp с заголовками в quarkus
Я хочу отправить POJO Java (ну Kotlin) как JSON в сообщении AMQP в RabbitMQ с помощью Quarkus.
@Path("/amqp")
class TestSource {
@Inject
@Channel("amqpwrite")
lateinit var emitter: Emitter<MonitoringStatusDto>
@POST
@Path("/send")
fun sendMsg() {
val status = MonitoringStatusDto(status = "OK", message = "test amqp write")
emitter.send(status)
}
}
В очереди кролика сообщение получено как поток байтов в кодировке base64.
Как я могу установить здесь заголовки, чтобы поместить в них тип контента? Также могут быть интересны настройки заголовка, такие как TTL.
1 ответ
Вы можете добавить метаданные в эмиттер:
emitter.send(Message.of(recordToPublish,
() -> {
// Called when the message is acked
return CompletableFuture.completedFuture(null);
},
e -> {
// Called when the message is nacked
throw new RuntimeException(errorMessage, e);
}).addMetadata(OutgoingKafkaRecordMetadata.<String>builder()
.withHeaders(new RecordHeaders().add("my-header", "value".getBytes()))
.build()));
У меня была та же проблема, и я нашел это руководство: https://quarkus.io/guides/kafka#sending-messages-to-kafka .