Невозможно использовать несколько объектов ServiceInstanceListener в CreateServiceInstanceListeners - PullRequest
1 голос
/ 09 апреля 2019

Я создал приложение Service Fabric и StatelessService.CreateServiceInstanceListeners возвращает несколько ServiceInstanceListener объектов.Слушатели службы открываются, но прерываются практически сразу.Затем он снова открывает слушателей (не проходя через CreateServiceInstanceListeners, прерывает их, ...

Когда я использую только один из слушателей службы, тогда все работает нормально.

1 Ответ

2 голосов
/ 09 апреля 2019

Возвращенные прослушиватели экземпляра службы добавляются в ServiceListenerInstanceCollection ([код] [1]), и это происходит сбой, если в коллекции уже есть экземпляр прослушивателя службы с таким именем.

ServiceInstanceListenerКонструктор имеет следующую реализацию:

public ServiceInstanceListener(
   Func<StatelessServiceContext, ICommunicationListener> createCommunicationListener,
   string name = "")
{
  this.CreateCommunicationListener = createCommunicationListener;
  this.Name = name;
}

Имя по умолчанию - пустая строка, поэтому, если вы не укажете имя, возвращаемое перечисление содержит несколько слушателей с именем "", и это вызывает исключение,Реализация по умолчанию отменяет уже открытые слушатели и перезапускает их.

Решение простое.Просто укажите (уникальное) имя при создании ServiceInstanceListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...