2017-02-07 14 views
0

Я пытаюсь создать микросервис, который прослушивает канал redis pubsub и сохраняет некоторые события в БД.Действия по переносу микросервисов от redis pubsub

В моем тестовом примере я вращаю 2 экземпляра своего микросервиса, слушая тот же канал.

вещь, с которой я сейчас сталкиваюсь, заключается в том, что для каждого события, которое оба экземпляра обновили БД одновременно, я хотел знать, есть ли способы предотвратить это действие?

как для каждого события будет выбран один экземпляр для выполнения обновления?

ответ

2

Существует две системы обмена сообщениями: pub-sub и queue. Для системы pub-sub каждый клиент обрабатывает все события, а для системы queue каждое событие обрабатывается только одним клиентом. Кажется что вам нужно queue, NOT pub-sub.

Вы можете использовать Redis LIST для реализации простого обмена сообщениями queue:

// producers push events into a queue 
RPUSH que event1 
RPUSH que event2 
// push other events... 

// consumers pop events from the queue 
BLPOP que timeout 

ПРИМЕЧАНИЕ: это НЕ идеальным решением, он имеет некоторые надежные проблемы. Тем не менее, есть некоторые решения с открытым исходным кодом, основанные на Redis, вам не нужно изобретать колесо.

 Смежные вопросы

  • Нет связанных вопросов^_^