Что выбрать для реализации очереди с гарантированной доставкой в которой задачи выполняются единожды?
Планируется сервер с приличной нагрузкой в некоторые моменты времени. хочется некоторые критичные запросы вынести в очередь. Требования:
1. Выполняться они должны строго по очереди, допускается некоторая задержка
2. Выполняться каждая задача должна ровно один раз.
3. Масштабируемости особой не планируется.
4. Приветствуется простота в настройке и поддержке
у вас по описанию — классический пример использования очереди: отправил сообщение, прочитал и если выполнил по нему задачу — изъял его и так по порядку
1. Что такое приличная нагрузка? (в цифрах)
2. Если мы говорим про высокие нагрузки и последовательные операции то у меня для вас очень плохие новости (так не бывает, не говоря уже про то что очереди за это не отвечают)
3. Задача один раз - CQRS паттерн + Correlation token ( и даже при этом 100% не достигнуть)
4. Если мы говорим про высокие нагрузки то стоит забыть про "поставил и забыл". Больно будет обязательно
5. Что делает RabbitMQ в тегах?
1. несколько десятков тысяч посещений сайта в сутки
2. тут не нужен реалтайм. мне достаточно чтобы данные не пропадали и обрабатывались по очереди. а сам фронт должен выдержать.
3. По сути, CQRS есть.
4. Мне нужно уйти от обработки записи в БД в рамках сессии с браузером пользователя. А почему будет больно и в каком месте?
5. Ну это как бы синоним очереди, если мы говорим о PHP, как наиболее известной частности AMQP протокола
1. нагрузки у вас нет, даже серьезной
2. реалтайм это вообще почти миф. данные . все-равно так или иначе иногда пропадают - надо просто знать как эти случаи будут обрабатываться. Фронт вообще все должен выдерживать ибо его обработка только на клиенте идет
3. если есть - хорошо, но фраза "но сути" - напрягает
4. что за операция должна в фоне обрабатываться? больно будет по тому что конфигурировать отказоустойчивость с очередями это почти всегда дубли и потери
5. это не синоним, а просто одна из реализаций. Да - кролик хорош, да - выдержит нагрузку, но не панацея. И да - кролик теряет данные тоже)