public ReceiveMessageResult receiveMessage()

in src/main/java/com/amazonaws/services/sqs/AmazonSQSIdleQueueDeletingClient.java [364:387]


    public ReceiveMessageResult receiveMessage(ReceiveMessageRequest request) {
        // Here we have to also fetch from the backup queue if we created it.
        String queueUrl = request.getQueueUrl();
        String alternateQueueUrl = alternateQueueName(queueUrl);
        QueueMetadata alternateMetadata = queues.get(alternateQueueUrl);
        if (alternateMetadata != null) {
            ReceiveQueueBuffer buffer = alternateMetadata.buffer;
            ReceiveMessageRequest alternateRequest = request.clone().withQueueUrl(alternateQueueUrl);
            buffer.submit(executor, () -> receiveIgnoringNonExistantQueue(request),
                    queueUrl, request.getVisibilityTimeout());
            buffer.submit(executor, () -> receiveIgnoringNonExistantQueue(alternateRequest),
                    queueUrl, request.getVisibilityTimeout());
            Future<ReceiveMessageResult> receiveFuture = buffer.receiveMessageAsync(request);
            return SQSQueueUtils.waitForFuture(receiveFuture);
        } else {
            try {
                heartbeatToQueueIfNecessary(queueUrl);
                return super.receiveMessage(request);
            } catch (QueueDoesNotExistException e) {
                request.setQueueUrl(recreateQueue(queueUrl));
                return super.receiveMessage(request);
            }
        }
    }