Обязательно ли реализовывать AWS SQS с JMS на Java? - PullRequest
0 голосов
/ 30 августа 2018

Я новичок в AWS SQS и хочу внедрить его в свой проект. У меня вопрос: могу ли я внедрить SQS самостоятельно или мне нужно использовать SQS Java Messaging Library? Не могли бы вы помочь мне в этом? Заранее спасибо .

1 Ответ

0 голосов
/ 30 августа 2018

Абсолютно нет - 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.

...