Можно ли настроить конечную точку 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 для примера такой интеграции.