2013-10-07 25 views
0

大約一年前,我能夠在一個WorkerRole中使NSB站起來,在Azure上工作得很好。我們實施了一些服務。它花了一些工作,然後圍繞依賴和版本進行了幾個問題的旋轉,然而經過很多調整,我們得到了一些東西並運行起來。NServiceBus.Azure - AzurePubSub開始的主機循環開始

因此,快進到今天,新產品試圖站起來舉一個簡單的例子,在我們正在構建的系統的NSB v4.0的探索階段進行概念驗證。 我想站在這裏的AzurePubSub示例; https://github.com/Particular/NServiceBus.Azure/tree/develop/IntegrationTests/AzurePubSub

只花了一段時間才讓樣本運行。我已經記錄了我已經採取的步驟;

使用VS 2K12,NSB 4.0(最新的穩定)

  1. 打開AzurePubSub項目
  2. 提示您轉換該項目以面向Windows Azure工具 - 2.1(轉換)
  3. 降NSB從裁判MyMessages,用的NuGet NServiceBus.Interfaces PKG
  4. 清潔更換了MyMessages構建
  5. OrderService,下降NServiceBus,NServiceBus.Core,NServiceBus.Azure,NServiceBus.Hosting.Azure,Common.Log ging
  6. OrderService,上面用NuGet包(NServiceBus.Hosting.Azure)替換。

  7. OrderWebsite下降NServiceBus,NServiceBus.Azure,NServiceBus.Core,Common.Logging

  8. OrderWebsite,上面NuGet包(NServiceBus.Azure)代替。

  9. 實現了一個乾淨的解決方案構建!

  10. 調試

無法加載文件或程序集 'Microsoft.WindowsAzure.Diagnostics,版本= 2.1.0.0,文化=中性公鑰= 31bf3856ad364e35' 或它的一個依賴。定位的程序集清單定義與程序集引用不匹配。 (從HRESULT異常:0x80131040)

  1. 添加綁定重定向手動OrderWebsite(任選地可以REF的NuGet用於診斷)

    1. 調試

    C不應加載文件或程序集「Microsoft.WindowsAzure.Diagnostics,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35」或其某個依賴項。定位的程序集清單定義與程序集引用不匹配。(從HRESULT異常:0x80131040)

    1. 添加綁定重定向手動OrderService(任選地可以REF的NuGet用於診斷)

    2. 調試

    不能加載 文件或程序集'Microsoft.WindowsAzure.Diagnostics,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依賴項之一。定位的程序集清單定義與程序集引用不匹配。 (從HRESULT異常:0x80131040)

    1. 掉落Microsoft.WindowsAzure.Diagnostics附圖2.0.0.0
    2. 添加Microsoft.WindowsAzure.Diagnostics參考2.1.0.0(文件版本2.1.6493.0)同時OrderService和OrderWebsite (左綁定重定向)

    3. 調試 OrderWebsite加載得很好。 OrderService被陷入循環通過Azure Compute Emulator開始和停止。 EndpointConfiguration ctor永遠不會被調用,也不會調用DefineRouting類IProvideConfiguration實現。

    Azure計算仿真器輸出中:

[織物]角色實例:deployment21(119).AzureService.OrderService.0 [織物]角色狀態不健康 [診斷]:UpdateState(微軟Windows Diagnostics.DiagnosticMonitorStartupInfo,Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorConfiguration) [Diagnostics]:獲取互斥體 [診斷]信息:C:\ Users \ Ryan \ AppData \ Local \ dftmp \ Resources \ a903dc1b-98a5-4a78- b04d-c533e881564d \目錄\ DiagnosticStore \星期一itor [診斷]信息:D:\ GitHub \ NServiceBus.Azure \ IntegrationTests \ AzurePubSub \ csx \ Debug \ roles \ OrderService \ diagnostics \ x64 \ monitor \ MonAgentHost.exe -LocalPath「C:\ Users \ Ryan \ AppData \ Local \ dftmp \ Resources \ a903dc1b-98a5-4a78-b04d-c533e881564d \ directory \ DiagnosticStore \ Monitor「-StaticConfigFile」C:\ Users \ Ryan \ AppData \ Local \ dftmp \ Resources \ a903dc1b-98a5-4a78-b04d-c533e881564d \ directory \ DiagnosticStore \ Monitor \ Configuration \ mastaticconfig.xml「-ConfigFile」C:\ Users \ Ryan \ AppData \ Local \ dftmp \ Resources \ a903dc1b-98a5-4a78-b04d-c533e881564d \ directory \ DiagnosticStore \ Monitor \ Configuration \ maconfig.xml 「-ShutDownEvent WADDM關機-81011d9e243b47bc8941b805e7146ce3 -InitializedEvent WADM起動時-81011d9e243b47bc8941b805e7146ce3 -parent 5704個-events [織物]角色狀態停止 [診斷]:創建配置頻道服務器 [MonAgentHost]輸出:代理將退出當發信號通知WADDM-ShutDown-81011d9e243b47bc8941b805e7146ce3時。 [MonAgentHost]輸出:在代理程序初始化後,將發出信號WADM-StartUp-81011d9e243b47bc8941b805e7146ce3。 [MonAgentHost]輸出:註冊爲事件使用者。 [MonAgentHost]輸出:當父進程5704退出時,代理將退出。 [MonAgentHost]輸出:已啓動監視代理程序 [診斷]:啓動配置信道輪詢 [運行時]角色入口點。調用OnStart() [運行時]角色入口點。完成OnStart() [運行時]角色入口點。 CALLING運行() [運行時]角色入口點。已完成運行()==>角色回收啓動 [運行時]角色實例回收正在啓動 [運行時]角色入口點。調用OnStop() [運行時]角色入口點。已完成OnStop() [fabric]角色狀態忙

這就是它一遍又一遍地循環的地方。 使用OrderService的Worker角色初始化事件時顯然會出現錯誤,但是我似乎無法找到出錯的地方。

任何人有任何想法如何找出原因?

非常感謝, 瑞安

回答

0

事實上,這與Visual Studio工具版本(2.1)和nservicebus 4.0對ServiceRuntime和診斷程序集(2.0)的參考之間的不兼容性有關。在運行時,他們需要匹配,否則當您提到部署時,您會看到奇怪的行爲。

你可以用兩種方法解決這個問題,使用VS工具2.0(應該在你的項目屬性的某處有一個開關),或者參考最新版本的NServicebus.Azure 4.1。如果一切順利,我們應該能夠儘快發佈這個新版本。

我也很痛苦地意識到,這個兼容性問題將困擾我們未來的版本,所以我期待在未來將nservicebus從特定的windows azure sdk版本中分離出來。這是github問題,如果你想跟隨這一進展。 https://github.com/Particular/NServiceBus.Azure/issues/26

0

最新穩定NServiceBus.Azure可與Azure的SDK 2.0。我強烈建議使用2.0,而在同一開發機器上可以同時使用2.0和2.1。

我也將從源代碼構建NSB和NSB.Azure並調試Azure傳輸初始化。那裏有幾個問題,伊夫斯已經解決了,但我不確定這是否已經發布。我不知道你的配置,並且不能在那裏說出任何內容,但是如果你得到了不正確的隊列名稱,它就會默默地失敗。