Сейчас:Создайте очередь push, используя Amazon SQS и SNS, как?
- App # 1 вставки сообщения в SQS
- .NET, работник роль опрашивает очереди и если нашли сообщение, отправленное его в App # 2 к процессу, подождите App # 2, чтобы закончить и повторный запуск опрос очередь
- App # 2 процесса сообщение, которое является длительной и тяжелой задачей
в App # 2 могут занять довольно много времени, чтобы обрабатывать сообщения, и я не могу предсказать, сколько сообщений посылаются одновременно из приложения №1 система очередей гарантирует мне, что приложение №2 не исчерпывается ресурсами, и система может масштабироваться довольно легко. Но есть проблема, которую я бы хотел решить: я бы предпочел не иметь машину для запуска рабочей роли (теперь на Azure) просто для опроса очереди (все размещено в другом месте, где роль рабочего не является вариантом). Более того, опрос никогда не будет настолько восприимчивым, как толчок из-за пауз между опросами.
Переключение с опроса на то, чтобы звук звучал правильно, но мне нужно, чтобы я сохранил гарантию, что даже если 1k сообщений отправляются из приложения № 1 за одну секунду, приложение №2 обрабатывает их один за другим и не попадает в 1k раз в секунду.
Я планировал дизайн, где приложение № 1 публикует в тему SNS, чьи подписчики являются SQS и App # 2. Приложение № 2 проверяет очередь SQS, и если она пуста, она завершает работу, если не обрабатывает сообщения один за другим, а затем завершает работу. Но как я могу закодировать приложение № 2 (прямо сейчас веб-службу .Net), так что, если он уже обрабатывает сообщение и получает уведомление от SNS, он ничего не делает и завершает работу (если не будет выполняться несколько обработок).
Любые предложения, как это сделать? Я читал this blog post, но я не знаю, как избежать обработки приложения для обработки нескольких сообщений одновременно.