У меня возникла ошибка при использовании Bus.SendToQueues, подробная ошибка в конце вопроса.Nservicebus msmq to azure queue using gateway
У меня есть лазурная очередь, настроенная с учетной записью хранения и ключом, и я пытаюсь использовать Bus.SendToSites, чтобы иметь обработчик служебного обслуживания в помещении, используя msmq, отправить сообщение на сайт azure.
Попытка получить шлюз идет, в соответствии с: http://support.nservicebus.com/customer/portal/articles/859548-the-gateway-and-multi-site-distribution, и я использую эту конфигурацию:
App.config: (? Могу ли я создание сайта правильно)
<section name="GatewayConfig" type="NServiceBus.Config.GatewayConfig, NServiceBus.Core" />
<GatewayConfig>
<Sites>
<Site Key="Azure" Address="http://<!--STORAGE ACCOUNT NAME-->.queue.core.windows.net/<!--STORAGE ACCOUNT KEY-->" ChannelType="Http"/>
</Sites>
</GatewayConfig>
Handler:
Bus.SendToSites(new[] { "Azure" }, message);
Во время выполнения я получаю следующее:
ошибка: Не удалось отправить сообщение по адресу: адрес данных дистрибьютора, используемый в качестве обратного адреса сообщений, отправленных этим endpoint..gateway @ HFORTE
Внутренняя Исключение: { "имя формата недействителен "}
StackTrace:. на System.Messaging.MessageQueue.MQCacheableInfo.get_WriteHandle() в System.Messaging.MessageQueue.StaleSafeSendMessage (MQPROPS свойства, ITransaction сделка) на System.Messaging.MessageQueue.StaleSafeSendMessage (MQPROPS свойства, IntPtr транзакций) на System.Messaging.MessageQueue.SendInternal (объект Объект, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType) в System.Messaging.MessageQueue.Send (объект Объект, MessageQueueTransactionType transactionType) в NServiceBus.Transports.Msmq.MsmqMessageSender.Send (TransportMessage сообщение, адрес адрес) в: линия 0
Я вижу, что транспорт MSMQ - это то, что проблема, что MSMQ и Azure различные транспортные протоколы , и если да, то как это исправить?
Спасибо, что мой страх и опыт до сих пор. Я тоже начал работать с реле. Я использую webapi, чтобы просто отправлять сообщения в лазурь, поскольку мне нужно только одностороннее общение. –
Мы используем решение NSB, размещенное в помещениях, но использующее AzureSB в качестве транспорта. Поэтому мы используем AzureSB для гарантированной доставки от локального к облаку. Но все другие локальные службы используют MSMQ. Таким образом, у нас есть этот шлюз на основе RavenDb для обмена сообщениями между этими двумя. Поскольку RavenDb может хранить сообщения как есть, плюс поддерживает подписки на события, его было довольно легко реализовать. –
@AlexeyZimarev более подробно об этом решении, оправдал ли он ожидания? подводные камни? лучшие решения? –