NServiceBus MessageDeserializationException для DataBusProperty - PullRequest
0 голосов
/ 26 июня 2019

У нас есть среда NServiceBus 6 с несколькими службами, которые отправляют файлы между собой, используя DataBusProperty через пользовательский SqlDataBus: IDataBus.

Это нормально работает на NSB6 с использованием встроенного сериализатора JSON, но теперь не работает после того, как мы перешли на NSB7 и NewtonsoftSerializer.

Удаление DataBusProperty из наших классов и просто использование byte [] работает нормально. Мы также попытались изменить DataBus на FileShareDataBus, но получили то же исключение:

NServiceBus.MessageDeserializationException: An error occurred while attempting to extract logical messages from incoming physical message c7b5cd47-c1b7-4610-9f6c-aa7800cc9b64 --->
Newtonsoft.Json.JsonReaderException: Error reading bytes. Unexpected token: StartObject. Path 'Data.Key', line 1, position 68. 

Это не работает, даже если служба отправляет сообщения сама себе. Также мы можем видеть файлы, записанные в хранилище файлов, как в Sql, так и в File Share, поэтому они сериализуются нормально.

Пример полезной нагрузки из очереди ошибок:

{"ExecutionId":"1db85105-a71c-4b29-87da-9b7ae6518c1c","Data":{"Key":"2019-06-26_13\\6a2b63c7-12b0-46dd-8b92-f1fc743d27c1","HasValue":true}}

Как мы можем заставить это десериализоваться в NSB7 + NewtonsoftSerializer, когда оно нормально работает в NSB6 + JsonSerializer?

Спасибо

1 Ответ

0 голосов
/ 27 июня 2019

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

В зависимости отвариант использования с использованием Streams может быть более эффективным подходом.

...