Flexberry / NewPlatform.Flexberry.ServiceBus

Flexberry Service Bus - Runtime service
MIT License
3 stars 4 forks source link

RMQ. Доработка кластерного режима #86

Open a-verhola opened 4 years ago

a-verhola commented 4 years ago

Описание ошибки

Есть проблема с распределением ролей сервисов шины, входящих в кластер при использовании шины, работающей с RabbitMQ. Возможны случаи:

  1. Ни один сервис не берет на себя роль лидера и спустя некоторое время это не исправляется;
  2. Лидерами выступают сразу же несколько сервисов;
  3. Один сервис становится лидером N раз и плодит N консюмеров на каждую подписку. Возможно, также, при этом он запускает N процессов синхронизации.

Ожидаемое поведение

Лидеров не больше одного. В случае отсутствия лидера, должность должна быть перераспределена автоматически.

Шаги воспроизведения

Четкого алгоритма нету.

Пути решения

Искать проблему в работе с DLM. Также можно попробовать обновить версию etcd и/или клиентской библиотеки, если это возможно и меняет принцип работы с dlm на более надежный.

Исходный код

Скорее всего, проблема кроется где-то тут: https://github.com/Flexberry/NewPlatform.Flexberry.ServiceBus/blob/feature-rmq-sb-clustering/Clustering/NewPlatform.Flexberry.ServiceBus.Dlm.Etcd/EtcdDistributedLockManager.cs Или вокруг использования этого.

Проект на GitHub: https://github.com/Flexberry/NewPlatform.Flexberry.ServiceBus/commits/feature-rmq-sb-clustering Ветка: feature-rmq-sb-clustering