似乎nServicebus附带的所有示例项目都设置为发送者和主机是 Web 角色和工作角色(并通过角色入口点托管)。
我需要做这样的事情:
Web 角色发送消息 --> On Premise Host 处理消息
是否可以将本地主机配置为仅使用 Azure 队列存储(而不是 MSMQ)?
我似乎在任何地方都找不到一个这样的例子。
似乎nServicebus附带的所有示例项目都设置为发送者和主机是 Web 角色和工作角色(并通过角色入口点托管)。
我需要做这样的事情:
Web 角色发送消息 --> On Premise Host 处理消息
是否可以将本地主机配置为仅使用 Azure 队列存储(而不是 MSMQ)?
我似乎在任何地方都找不到一个这样的例子。
是的,这是可能的,您只需在初始化总线时指定传输:
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。
我没有使用 nServiceBus,但听起来 Azure 服务总线将是您在本地和 Azure 之间进行混合通信的最佳选择。
您可以使用 ServiceBus 队列,或者更智能地了解您的模型,并通过主题和订阅进行发布/订阅。
在此示例中,您可以让 Web 角色写入队列/主题,然后让本地消费者通过 REST(.NET API) 从队列/主题中读取。(参见下面链接中的示例)
查看他们的 MSDN 链接:http: //msdn.microsoft.com/en-us/library/windowsazure/hh367516.aspx
当然,也许问 Udi Dahan 什么是最好的前进方式也可能是个好主意 :)