SQS キューからメッセージを取得する次のコードがあります。AmazonSQSBufferedAsyncClient
Queue からメッセージを取得するためにを使用しています。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(), ......);
}
.....
}
問題は、AWS コンソールを確認すると、メッセージは常に実行中ですが、アプリケーションで受信されることはありません (サイズは常に 0 として出力されます)。がキューからメッセージを読み取っているように見えますが、呼び出しAmazonSQSBufferedAsyncClient
に戻っていません。receiveMessage
何か案は?