Отправить сообщение 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 .

Другие вопросы по тегам