Можно ли настроить конечную точку NServiceBus (на транспорте Azure) для приема простой строки в качестве входных данных?

У нас есть конечная точка NServiceBus, которая отслеживает очередь шины обслуживания Azure (используя Azure в качестве транспорта). Но не все клиенты, отправляющие сообщения в очередь, основаны на.NET.

Можно ли настроить конечную точку NServiceBus для приема простой строки в качестве входных данных?

Я пытался перехватить сообщения с помощью класса, который реализует IMutateIncomingMessages, но на этом этапе десериализация из транспорта Azure уже не удалась.

Я могу проверить сообщение, поступающее в классе, реализующем IMutateIncomingTransportMessages, но я не уверен, что это правильное место.

Каков наилучший способ настроить NServiceBus для обработки сообщения, публикуемого в следующем формате (имейте в виду, что это также может приходить через Java или Node SDK или через конечную точку REST Azure):

 var brokered = new BrokeredMessage("This plain string represents the data.");
 queueClient.Send(brokered);

Десериализация этого сообщения завершится неудачно, поскольку оно содержит строку, а не байтовый массив, как и ожидалось транспортным десериализатором Azure.

PS: я знаю, что можно представить конечную точку как службу WCF, но в настоящее время у нас есть только процессы NServiceBus.Host, которые извлекают из очереди и решение WCF не кажется мне правильным решением.

1 ответ

Решение

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

Если вы хотите интегрировать нативно, вам нужно изменить части конвейера nsb, чтобы они соответствовали вашей среде.

См. https://github.com/yvesgoeleven/NServiceBus.AsbNativeIntegration для примера такой интеграции.

Другие вопросы по тегам