2014-10-16 63 views
0

我想了解NServiceBus給出的在線文檔。我無法控制的是基礎設施的整體建議設置。 我們的應用程序應該能夠同時運行單個機器和跨多個(邏輯上不同)的站點(n個商店-1總部)。 至於NServiceBus(我通過NuGet使用v5),我不完全理解主機和端點的概念。一個NServiceBus.Host爲一個EndPoint,什麼是推薦的方法

比方說,我們有15個服務(訂單服務,項目服務等)。

  1. 我需要15個客戶(15個類庫項目代碼在總線上發送消息),和15個服務器(即處理服務特定的消息/命令的一個或多個接收消息處理類) ?總共30個。

  2. 應該每個服務都使用自己單獨的MSMQ嗎?

  3. 對於那些15個「服務器」項目,在生產環境中,我需要安裝NServiceBus.Host 15次(因此創建15個Windows服務實例)。 在VS中進行調試時,NSerivceBus.Host.exe將在您開始調試時啓動。

因此,您有效地「託管」每個主機/服務器項目的一個端點。或者我可以擁有一臺主機和15個端點嗎?

你可以告訴我是新來這個ESB模式,十分感謝您的輸入。

回答

0
  1. 您不需要15個類庫。 NServiceBus可以根據消息的命名空間/類型來路由消息。例如:「Message.Orders」的所有名稱空間消息都可以路由到「Orders」隊列。

  2. 在生產可能性

    ..但它確實取決於消息的體積和邏輯分組/分區上。在開發中,我會爲所有消息設置一個隊列。

  3. 再次,這是通過邏輯分區決定的部署問題。通常你會有這個腳本來處理這些服務的安裝/卸載。我有我的PowerShell腳本。

NServiceBus在如何以及何時對消息進行分區方面非常靈活。它通常在UAT或Production的配置級別以及開發生命週期之外完成。記住,一個NServiceBus主機== 1 MSMQ

我開始一個服務,然後再啓動基於體積/優先級的消息分區。

此外,唯一的原因,你會崩潰的消息,15類,如果你想公開這些組件與外部解決方案,而暴露的其它消息類型。

0

服務(大寫S :-)在SOA服務的定義)是業務能力的邏輯分組

端點是物理過程,例如,在您的電子商務端點(網站),你可以有處理程序(程序集)形成部署在主機進程中的許多服務。

您可以在少數機器上部署少量端點,但是,隨着您擴展,您會發現在處理重要數據時您會希望將處理程序提取到其自己的端點,而您不需要希望隊列中的「不重要」消息延遲正在處理的「重要」消息。

至於隊列,每個端點都有自己的專用隊列。

當你達到高規模時,你可能會得到每個處理程序場景的Endpoint,但是在你需要這樣做之前可能會有一段時間,但是,我會從第一天開始使用一個處理程序=一個程序集並使確保沒有引入間的依賴關係,這些組件之間......

看看Udi's Blog

劑量有意義嗎?

相關問題