Интервал опроса для JMS MessageListener с поставщиком SQS

Я использую очереди amazon sqs для асинхронного использования сообщений. Я начал получать сообщения, используя JMS api для amazon sqs. Итак, я реализовал MessageListener и выполняю свою работу, как только сообщение поступает в метод onMessage. Поскольку amazon sqs взимается на основе запроса, отправленного на сервер, я хотел бы ограничить интервал опроса до 1 минуты или может быть больше, поскольку мне не нужно сразу сообщение.

В любом случае, мы можем настроить интервал опроса в JMS, или я должен использовать API Amazon sqs, чтобы справиться с этим самостоятельно.

Спасибо


person Jiten Gupta    schedule 16.04.2015    source источник


Ответы (2)


В этом случае вы можете выбрать синхронный вызов приема, то есть consumer.receive(timeout) вместо прослушивателя сообщений. Вы можете позвонить на входящий звонок только тогда, когда захотите.

Мне также немного интересно, как метод onMessage должен вызываться поставщиком сообщений SQS только тогда, когда в очереди есть сообщение. Здесь не должно быть никакого опроса.

Обновление:

SQS предоставляет реализацию JMS. Таким образом, AsyncMessageListener определенно должен выполнять ту работу, которую вы ищете. Этот пример AsyncMessageListener должен вам помочь.

person Shashi    schedule 16.04.2015
comment
SQS - это просто провайдер и не обращается к клиентам, получающим сообщения. Клиент несет ответственность за получение сообщения. Consumer.receive является односторонним. Даже мы можем проводить длинный опрос в SQS, но я ищу способ добиться этого с помощью JMS API. - person Jiten Gupta; 16.04.2015

Взгляните на мое сообщение в блоге, которое я написал, когда возвращался на эту тему: http://thedulinreport.com/2015/05/09/guaranteeing-delivery-of-messages-with-aws-sqs/

В сообщении блога объясняется, как реализовать асинхронные слушатели, не используя ничего, кроме AWS SDK, а также даются ссылки на примеры на github.

person Oleg Dulin    schedule 26.08.2015