Как только я получаю HTTP-сообщение Get / Post, я должен настаивать и возражать, а затем отправлять сообщение в очередь, где другие службы слушают, чтобы начать выполнять другую сложную работу.
Моя текущая проблема заключается в том, что я не могу просто вызвать метод с аннотацией @Outgoing ("канал"), я попробовал это и просто продолжаю выполнять метод без вызова
Есть ли способ вызвать метод для отправки полезной нагрузки JSON в очередь с помощью платформы Quarkus?
PS: Я также пытаюсь использовать rabbitMQ и снова переключился на ActiveMQ
Я следовал инструкциям Quarkus по реактивному обмену сообщениями и пытался зарегистрировать что-то в реализованном ресурсе, но безуспешно.
@Path("/part")
class PartService : PanacheRepository<PartDao>, Logging {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Transactional
fun fetchParts(): List<PartDao> {
val partDao = PartDao(label = "Test", status = PartStatus.INBANK, creatorId = "ghost-007")
partDao.persist()
if (partDao.isPersistent) {
// Send a message to a queue -> PoC
send(partDao)
}
return findAll().list()
}
@Outgoing("part-persisted")
@Transactional
fun send(partDao: PartDao): CompletionStage<AmqpMessage<*>> {
val future = CompletableFuture<AmqpMessage<*>>()
val message = "hello from sender"
// Debug proposes
println("Sending (data): $message")
logger.debug(partDao.toString())
future.complete(AmqpMessage(message))
return future
}
}
Ожидал:
Зарегистрируйте сообщение "привет от отправителя" в очереди после выполнения:
curl http://localhost/part
Фактические результаты:
метод send просто продолжает выполняться