Для сериализации Json в NServiceBus 7 для транспорта Sql требуется имя, полное сборки - PullRequest
0 голосов
/ 31 мая 2018

Я обновляю свои конечные точки sql tranport NServiceBus с версии 6 до 7. Первое изменение, которое я должен был сделать, это NServiceBus.JsonSerializer, поскольку он устарел.

Я изменил свою конфигурацию конечной точки наиспользуйте NServiceBus.NewtonsoftSerializer:

endpointConfiguration.UseSerialization<NewtonsoftSerializer>()

Это изменение вызывает исключение типа:

Newtonsoft.Json.JsonSerializationException: Type specified in JSON 'MyAssembly.MyEvents.MyEvent' was not resolved

Первый подход :

Для его решения IЯ должен ввести мою сборку в свой json $type свойство из всех моих триггеров:

insert into [MyEndpointQueue] (Id , Recoverable, Headers, Body) 
... 
values (.... 
convert(varbinary(MAX), '{"$type":"MyAssembly.MyEvents.MyEvent, MyAssembly.Events" ..... }

Второй подход :

Я пытался реализовать свой пользовательскийISerializationBinder вот так: https://docs.particular.net/nservicebus/serialization/newtonsoft#compatibility-with-the-core-json-serializer-use-of-type-requires-an-assembly-qualified-name

Этот подход заставляет рефакторинг всех моих сервисов передавать массив Type[] messageTypes.

Есть ли третий подход, который работает как NServiceBus.JsonSerializer?

То есть

  1. Я бы хотел оставить свои триггеры без названия сборки,
  2. И не обязательно указывать все мои типы событий длякаждая служба в конфигурации моих конечных точек.
...