似乎设置了 nServicebus 附带的所有示例项目,其中发件人和主持人是Web角色和工作者角色(并通过角色入口点托管)。
我需要做这样的事情:
Web角色发送消息 - > On Premise主机处理消息
是否可以将内部部署主机配置为仅使用Azure Queue存储(而不是MSMQ)?
我似乎无法在任何地方找到这样的例子。
答案 0 :(得分:3)
是的,这是可能的,您只需在初始化总线时指定传输:
var config = Configure.With()
.SpringBuilder()
.AzureConfigurationSource() <--- Don't use this when working on premise.
.XmlSerializer()
.UnicastBus()
.LoadMessageHandlers()
.AzureQueuesTransport() <--- Configure Azure Storage Queues
.IsTransactional(true)
.PurgeOnStartup(false)
.InMemorySubscriptionStorage();
对于文档部分,我建议你看看github:https://github.com/NServiceBus/NServiceBus/tree/master/Samples/Azure
请注意,大多数这些示例都是在Windows Azure中运行,因此使用 AzureConfigurationSource 。当您在本地运行时,这将不起作用,因为它使用RoleEnvironment中的设置。在内部工作时不要使用 AzureConfigurationSource 。
答案 1 :(得分:-1)
我没有使用过nServiceBus,但听起来Azure Service Bus是您在内部部署和Azure之间进行混合通信的最佳选择。
您可以使用ServiceBus队列,或者对您的模型更加智能,并通过主题和订阅进行发布/订阅。
在此示例中,您可以让Web角色写入队列/主题,然后让本地使用者通过REST(.NET API)从队列/主题中读取。 (参见下面链接中的示例)
查看指向MSDN的链接:http://msdn.microsoft.com/en-us/library/windowsazure/hh367516.aspx
当然也许问Udi Dahan前进的最佳方式也许是一个好主意:)