2012-04-23 75 views
3

看起來,發件人和主機都是Web角色和輔助角色(並通過角色入口點託管)的情況下,似乎所有示例項目都配有nServicebus使用azure的nservicebus內部部署主機隊列

我有必要做這樣的事情:

Web角色發送消息 - >內部部署主機處理消息

是否有可能在前提主機配置爲只使用Azure的隊列存儲(而不是MSMQ)?

我似乎無法找到任何地方記錄的單個示例。

回答

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

+0

我會試一試。關於預置主機所需的依賴關係,nservicebus.azure是唯一需要的依賴關係嗎?我注意到那裏還有一個nservicebus.hosting.azure包,但我猜測這是因爲主機坐在一個工作角色中。 – chutch 2012-04-23 11:27:16

+0

NServiceBus.Azure包應該足以滿足您的要求。 – 2012-04-23 11:31:55

+0

好吧,我已經深入瞭解了這一點。這是我已經達成的結論。讓我知道我的假設是否不正確。 1)我不能使用nservicebus.host.exe進程這是一個正確的假設嗎? – chutch 2012-04-23 13:49:48

-1

我沒有使用nServiceBus,但聽起來Azure Service Bus將是您在本地和Azure之間進行混合通信的最佳選擇。

您可以使用ServiceBus隊列或更加智能化您的模型,並通過主題和訂閱進行發佈/訂閱。

在此示例中,您可以將Web角色寫入隊列/主題,然後讓本地使用者通過REST(.NET API)從隊列/主題讀取內容。 (見下面的鏈接例子)

退房鏈接到MSDN上他們:http://msdn.microsoft.com/en-us/library/windowsazure/hh367516.aspx

當然也許問烏迪大漢什麼是最好的出路也可能是一個好主意:)

+0

僅供參考。 NServiceBus和Azure服務總線是兩個完全不同的東西。 NServiceBus是用於簡化基於消息傳遞的應用程序開發的框架,而Azure Service Bus是一種爲消息傳遞提供基礎結構的服務。因此,這兩者齊頭並進,事實上nservicebus支持開箱即用的Azure Service Bus隊列(不包括主題)。 – 2012-04-25 10:58:24

+0

我知道他們是什麼,只是沒有使用NServiceBus! – user728584 2012-04-25 20:01:38