- У меня есть несколько служб мониторинга
MonSvc(1..N)
, которые обнаруживают изменения и публикуют sh эти изменения. - Я несколько служб, которые работают с этими обновлениями (например,
LoggerSvc
& Enforcement-Svc
) Примечание. Потребительские службы нуждаются во всех обновлениях и не могут пропустить обновление.
Я использую Redis в качестве моего координатора (брокера), но я немного озадачен тем, как мне это реализовать.
Вариант 1. Каждый MonSv c# publi sh обновляет канал Redis, в то время как службы мониторинга подписываются
, такой дизайн завершается ошибкой, так как если служба Consumer выходит из строя, она может пропустить обновление, которое не может получить позже
Вариант 2: каждый MonSv c# ставит в очередь обновления в Redis List (очередь), в то время как потребители берут элементы из очереди
потребители не принимают все обновления, но каждый получает неполный список.
Вариант 3: каждый MonSv c# ставит в очередь обновления для нескольких списков повторного ввода (очереди) (очередь / потребитель), в то время как потребители принимают элементы из очередей
This работает нормально, но, кажется, плохо масштабируется (MonSv c# нужно к кто сейчас публикует в + сколько?
Как мне получить "Multi-Publisher >> Multi-Consumer Queue" с Redis (или я должен использовать более сильного брокера?)