У нас есть конечная точка NServiceBus, которая контролирует очередь служебной шины Azure (используя Azure в качестве транспорта). Но не все клиенты, отправляющие сообщения в очередь, основаны на .NET.Можно ли настроить конечную точку NServiceBus (на транспорте Azure), чтобы принять простую строку в качестве входных данных?
Может ли конечная точка NServiceBus быть настроена на прием простой строки в качестве входных данных?
Я попытался перехватить сообщения с классом, который реализует IMutateIncomingMessages, но в этот момент десериализация из транспорта Azure уже не удалась.
Я могу проверить сообщение, входящее в класс, реализующий IMutateIncomingTransportMessages, но я не уверен, что это подходящее место.
Каков наилучший способ настройки NServiceBus для обработки сообщения, которое опубликовано в следующем формате (имейте в виду, что это также может прийти через Java или Node SDKs, или с помощью конечной точки Azure REST):
var brokered = new BrokeredMessage("This plain string represents the data.");
queueClient.Send(brokered);
Уничтожение этого сообщения не будет выполнено, поскольку оно содержит строку, а не массив байтов, как ожидалось от десериализатора транспорта Azure.
PS: Я знаю, что можно показать конечную точку как службу WCF, но в настоящее время у нас есть только процессы NServiceBus.Host, которые выходят из очереди, а решение WCF не похоже на правильное решение для меня.
Может ли ваша сериализация работать на вас? http://docs.particular.net/samples/pipeline/multi-serializer/ – Simon
Это просто возможно. Я отдам его. Благодаря! – willem
Теперь я углубился в это. К сожалению, код Azure Transport настаивает на том, что сообщение находится в формате byte []. Это происходит до того, как запускаются сериализаторы NServiceBus, поэтому это не сработает. – willem