очередь с контролем оттока (обратное давление) на AWS

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

Похоже, что SQS скорее фокусируется на обработке элементов в очереди как можно быстрее, без прямого контроля оттока. Даже с очередью SQS FIFO я не вижу хорошего способа контролировать пропускную способность элементов, покидающих очередь.

Даже использование тайм-аута видимости допускает только очень неэффективную реализацию противодавления.

Есть ли лучший сервис AWS для этого варианта использования?

Или есть хороший подход с использованием SQS, которого я еще не вижу?

1 ответ

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

Если вы хотите получать сообщения с более низкой скоростью, вам нужно настроить своего потребителя на получение сообщений с этой определенной скоростью. Вам не обязательно потреблять каждое сообщение, когда оно поступает, вы можете оставить их в очереди и потреблять, когда сможете. Например, у вас может быть потребитель, который периодически извлекает сообщения.

Если вашим потребителем является Lambda, вы можете установить зарезервированный предел параллелизма, чтобы у него было определенное количество функций, работающих параллельно. Если вы хотите установить более жесткое ограничение, вы можете активировать Lambda с помощью запланированного события CloudWatch. Хотя я бы не рекомендовал последний подход, потому что он не очень масштабируется.

Другие вопросы по тегам