Currently I am reading from my SQS
queue with the following code
public class SqsReceiver implements Runnable {
@Autowired
protected AmazonSQS sqs;
protected ReceiveMessageRequest receiveMessageRequest;
public void run() {
List<Message> messages = sqs.receiveMessage(receiveMessageRequest)
.getMessages();
for (Message msg : messages) {
logger.info("Processing message: {}", msg.getBody());
try {
processMessage(msg);
} catch (Exception e) {
logger.error("Error processing message", e);
} finally {
sqs.deleteMessage(new DeleteMessageRequest().withQueueUrl(
receiveMessageRequest.getQueueUrl()).withReceiptHandle(
msg.getReceiptHandle()));
}
}
}
}
And having a scheduler read every second:
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(1);
scheduler.initialize();
scheduler.schedule(sqsReceiver, new CronTrigger("* * * * * *"));
But recently, I learned Amazon released Using JMS with Amazon SQS. Now I was wondering besides having my code be independent from the underlying implementation, what benefits would there be in terms of performance and costs in switching my implementation to use JMS
?