Amazon SQS - JMS vs custom implementation

402 Views Asked by At

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?

0

There are 0 best solutions below