我是spring Boot 的新手,正在尝试一个有趣的场景。我想返回一个API的结果,并发布一些Kafka和rabbitMQ发布,我不想我的API响应停止,直到我发布的时候。我试图使用@EnableAsync
来启用应用程序中的aprc处理,并使用@async
来定义我的方法。
@Async
fun publishOfferEventsAsync() {
Thread.sleep(10000)
// publish to rmq
logger().debug { "xxxyyyzzz" }
}
我可以直接从bean的其他非blog方法调用这个blog执行吗?你有更好的方法吗?谢谢!
1条答案
按热度按时间w6lpcovy1#
如果sync.和
@Async
都在不同的对象中定义,则没有问题。如果它们定义在同一个对象中,这是不好的,因为
@Async
所基于的spring AOP不支持自调用。(详细信息请参阅此)如果它们真的需要在同一个对象中定义,你可以定义另一个通用的
@Async
执行器bean,并通过它调用@Async
.方法。类似于:然后注射使用它: