Есть проблема с распределением ролей сервисов шины, входящих в кластер при использовании шины, работающей с RabbitMQ.
Возможны случаи:
Ни один сервис не берет на себя роль лидера и спустя некоторое время это не исправляется;
Лидерами выступают сразу же несколько сервисов;
Один сервис становится лидером N раз и плодит N консюмеров на каждую подписку. Возможно, также, при этом он запускает N процессов синхронизации.
Ожидаемое поведение
Лидеров не больше одного. В случае отсутствия лидера, должность должна быть перераспределена автоматически.
Шаги воспроизведения
Четкого алгоритма нету.
Пути решения
Искать проблему в работе с DLM. Также можно попробовать обновить версию etcd и/или клиентской библиотеки, если это возможно и меняет принцип работы с dlm на более надежный.
Описание ошибки
Есть проблема с распределением ролей сервисов шины, входящих в кластер при использовании шины, работающей с RabbitMQ. Возможны случаи:
Ожидаемое поведение
Лидеров не больше одного. В случае отсутствия лидера, должность должна быть перераспределена автоматически.
Шаги воспроизведения
Четкого алгоритма нету.
Пути решения
Искать проблему в работе с 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