Требование заключается в следующем:
- Есть N производителей, которые генерируют сообщения или задания, или как бы вы это ни называли.
- Сообщения от каждого поставщика должны обрабатываться по порядку, и каждое сообщение должно обрабатываться ровно один раз.
- Есть еще одно ограничение: в любой момент времени для любого данного производителя должно обрабатываться не более одного сообщения.
- Потребляющая сторона состоит из нескольких потоков (они идентичны по своей функциональности), которые распределены по нескольким процессам — это приложение WSGI, запускаемое через mod_wsgi.
На данный момент организация очереди на принимающей стороне реализована в виде пользовательской очереди, которая является подклассом Очередь, но у него есть свои проблемы, в которые я не буду вдаваться, главная из которых заключается в том, что при перезапуске процесса его очередь теряется.
Есть ли продукт, который позволит выполнить требования, которые я изложил выше? Поддержка постоянства была бы отличной, хотя это не так уж важно (поскольку очередь больше не будет находиться в памяти рабочего процесса).