Я обновляю свои конечные точки 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
?
То есть
- Я бы хотел оставить свои триггеры без названия сборки,
- И не обязательно указывать все мои типы событий длякаждая служба в конфигурации моих конечных точек.