使用azure Queue的nservicebus内部主机

时间:2012-04-23 02:58:42

标签: azure nservicebus

似乎设置了 nServicebus 附带的所有示例项目,其中发件人和主持人是Web角色和工作者角色(并通过角色入口点托管)。

我需要做这样的事情:

Web角色发送消息 - > On Premise主机处理消息

是否可以将内部部署主机配置为仅使用Azure Queue存储(而不是MSMQ)?

我似乎无法在任何地方找到这样的例子。

2 个答案:

答案 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前进的最佳方式也许是一个好主意:)