Spring Boot中QueueMessagingTemplate及AmazonSQSAsync运行模式咨询
关于QueueMessagingTemplate与AmazonSQSAsync执行方式的疑问解答
1. QueueMessagingTemplate本身是异步还是同步运行?
QueueMessagingTemplate是同步的消息操作模板类,它的核心方法(比如receive()、send())都是阻塞式的同步调用设计。它的定位是简化Spring环境下的SQS消息操作,本身不提供异步执行的API,调用它的方法会等待操作完成后才返回结果。
2. 调用receive方法时,内部的AmazonSQSAsync是异步还是同步执行?
调用QueueMessagingTemplate.receive()时,底层会调用AmazonSQSAsync.receiveMessage()的同步重载方法,也就是说此时AmazonSQSAsync是同步执行的——调用会阻塞,直到SQS返回消息、达到等待超时时间,或者出现异常才会结束。
虽然AmazonSQSAsync本身提供了异步的receiveMessageAsync()方法(返回Future),但QueueMessagingTemplate的同步API并没有使用这个异步方法,而是沿用了同步调用逻辑。
内容的提问来源于stack exchange,提问作者Astart
相关产品推荐
相关产品推荐

