我有以下代码从 SQS 队列中检索消息。我正在使用 aAmazonSQSBufferedAsyncClient从队列中检索消息。SingleThreadedExecutor每 5 分钟调用一次固定延迟唤醒receiveMessage。队列中启用长轮询
@Service
public class AmazonQueueService
implements QueueService<String> {
@Autowired
private AmazonSQSBufferedAsyncClient sqsAsyncClient;
@Value("${aws.sqs.queueUrl}")
private String queueUrl;
@Override
public List<Message<String>> receiveMessage() {
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
ReceiveMessageResult result = sqsAsyncClient.receiveMessage(receiveMessageRequest);
LOG.debug("Size=" + result.getMessages().size());
return Lists.transform(result.getMessages(), ......);
}
.....
}
Run Code Online (Sandbox Code Playgroud)
问题是当我检查 AWS 控制台时,该消息始终在传输中,但从未在应用程序中收到(大小始终打印为 0)。看起来AmazonSQSBufferedAsyncClient正在从队列中读取消息但没有在receiveMessage调用中返回。
有任何想法吗?