'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 |
|---|
