Kotlin Quarkus AMQP在请求业务逻辑后向队列发送消息
一旦收到HTTPGET/Post,我就必须持久化和对象化,然后将消息发送到其他服务正在侦听的队列,并开始执行其他复杂的工作 我目前的问题是,我不能只调用带有@Outgoing(“channel”)注释的方法,我尝试过,只是继续执行该方法而不调用它 有没有一种方法可以调用一个方法来使用Quarkus框架向队列发送JSON负载 PS:我也尝试使用rabbitMQ并切换回ActiveMQ 我遵循Quarkus tuturial的反应式消息传递,并试图在已实现的资源中注册一些内容,但没有成功Kotlin Quarkus AMQP在请求业务逻辑后向队列发送消息,kotlin,quarkus,Kotlin,Quarkus,一旦收到HTTPGET/Post,我就必须持久化和对象化,然后将消息发送到其他服务正在侦听的队列,并开始执行其他复杂的工作 我目前的问题是,我不能只调用带有@Outgoing(“channel”)注释的方法,我尝试过,只是继续执行该方法而不调用它 有没有一种方法可以调用一个方法来使用Quarkus框架向队列发送JSON负载 PS:我也尝试使用rabbitMQ并切换回ActiveMQ 我遵循Quarkus tuturial的反应式消息传递,并试图在已实现的资源中注册一些内容,但没有成功 @Path
@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
}
}
实际结果:
send方法只是继续执行如果我理解正确,您希望调用一个方法,将某些内容放入流中 据我所知,您必须使用
发射器来执行此操作,请参见例如
请参阅文档。Hi,是否可以将各种关注点划分为不同的类别?现在很难弄清楚发生了什么你好,最好解释一下发生了什么:1。fetchParts方法在执行http请求时执行(例如:curl localhost/parts)2。当fetchParts()方法执行时,我需要向队列发送一条消息,这就是它调用send()方法3的原因。“send()”方法会将输出返回到@Outgoing注释中配置的消息队列问题是send()方法正在不间断地执行,而不是在执行fetchParts时。我担心将所有关注点包装到同一个类中可能会导致奇怪的行为。这只是为了测试porpusesSure,我理解,但我担心这种简单的测试方法本身会导致问题。非常感谢!这正是我需要的