Абсолютно нет - JMS совсем не требуется. Действительно, я бы рекомендовал против этого, поскольку это JMS 1.0 и не использует ни один из кодов JMS 2.
Вы можете начать с чего-то такого простого, как создание очереди:
CreateQueueRequest createQueueRequest = new CreateQueueRequest("my-queue-name");
String queueUrl = amazonSQS.createQueue(createQueueRequest).getQueueUrl();
Затем в эту очередь можно помещать сообщения и читать их.
Самая большая разница в том, что SQS требует опроса. Он не управляется событиями, как метод onMessage
в MessageListener
. Вы можете опрашивать и получать до 10 сообщений одновременно. Это выглядит примерно так:
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl)
.withMaxNumberOfMessages(10)
.withWaitTimeSeconds(5);
List<Message> messages = amazonSQS.receiveMessage(receiveMessageRequest).getMessages();
for (Message message : messages) {
// process each message
}
Сказав это, вы можете попросить поток выполнить чтение и, если хотите, отправить его в очередь JMS, если хотите. Это в конечном итоге то, что делает библиотека Amazon JMS / SQS.
Для получения более подробной информации посмотрите примеры Java SQS .
EDIT
Чтобы ответить на вопрос, опубликованный в комментарии, один из способов обработки очередей SQS - опрос определенной очереди SQS в потоке. Хотя вы можете опрашивать несколько очередей SQS, в коде немного проще опрашивать одну. И вы будете опрашивать очередь SQS, пока ваша программа работает. Если вы прекратите опросить его, вы больше не будете получать никаких сообщений SQS.