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