0

У нас есть требование, когда нам нужно обрабатывать 1 сообщение за раз (не строгий порядок) от начала до конца с использованием SQS. В любом случае мы можем установить maxConcurrentConsumer на 1 в SQS?AWS-SQS: Как установить maxConcurrentConsumers?

Я просматриваю документы, но не могу найти это свойство для установки. На консоли Amazon я не вижу это свойство в меню очереди очереди. Во время извлечения сообщений мы можем указать, сколько сообщений мы хотим прочитать в одном опросе, но поскольку функция автомасштабирования AWS может создавать несколько потребителей (на самом деле микросервисы Springboot), мы не можем полагаться на это, установив этот предел на 1.

PS : Мы не можем контролировать отправителя сообщения, он может отправлять много сообщений в SQS.

ответ

2

Существует не настройка, которая контролирует максимальное количество одновременных потребителей SQS. Как вы упомянули, обычной практикой является горизонтальное масштабирование потребителей очереди на основе размера очереди. Если по какой-либо причине ваше требование состоит в том, чтобы иметь одного потребителя очереди, вам придется удалить или отключить потребителей очереди из других микросервисов, чтобы у вас был только один потребитель.

Тем не менее, я рекомендую вам пересмотреть дизайн, чтобы разрешить использование только одного потребителя очереди, поскольку эта реализация не масштабируется.

+0

Я знаю, что это не лучший способ проектирования, поскольку мы серьезно ограничиваем масштабируемость наших приложений. Дело в том, что мы заперты в продукт, который является потребителем этих сообщений, и он не может обрабатывать несколько потоков. Он работает в условиях гонки при большой нагрузке. В краткосрочной перспективе нам необходимо как-то ограничить количество экземпляров потребителей SQS до фиксации продукта. Я думаю, что единственный вариант здесь, как предлагается, - это вручную прокомментировать SQS в файле свойств приложения. Благодаря! – SanA

+0

Вы пробовали играть в любой из настроек очереди SQS, особенно тайм-аут видимости? Это может не иметь никакого значения в зависимости от того, что именно вызывает условие гонки, но таймаут видимости контролирует, как долго сообщение невидимо для других потребителей. Поэтому, если вы установите более высокий тайм-аут видимости, вы можете помочь нескольким потребителям получить одно и то же сообщение одновременно. Опять же, это может не иметь особого значения, но хотелось бы упомянуть об этом. – jbird

Смежные вопросы