'How to process events one by one while using @SqsListener

I am using spring cloud @SQSlistener to read events from AWS SQS

    @SqsListener(value="queue_name", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
    public void sqsQueueListener(S3EventNotification event) {
        //Read file from S3
        //Process the file
        //Delete file from S3
    }

    @Bean
    public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSQSAsync) {
        return new QueueMessagingTemplate(amazonSQSAsync);
    }

    @Bean
    public QueueMessageHandlerFactory queueMessageHandlerFactory(final ObjectMapper mapper,
                                                                 final AmazonSQSAsync amazonSQSAsync) {
        final QueueMessageHandlerFactory queueHandlerFactory = new QueueMessageHandlerFactory();
        queueHandlerFactory.setAmazonSqs(amazonSQSAsync);
        queueHandlerFactory.setArgumentResolvers(
                Collections.singletonList(new PayloadMethodArgumentResolver(jackson2MessageConverter(mapper))));
        return queueHandlerFactory;
    }

If there are multiple events from SQS, All the event are getting processed in parallel

How can i make sure that only one event is processed at a time.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source