大约一年前,我能够让NSB站起来并在一个WorkerRole上在Azure上工作得很好。我们实施了一些服务。它需要一些工作,有几个问题围绕依赖关系和版本,但经过大量调整后,我们开始运行。
快到今天,新产品,尝试站起来一个简单的例子,在探索阶段使用NSB v4.0为我们正在构建的系统进行概念验证。 我想站起来这里的AzurePubSub示例; https://github.com/Particular/NServiceBus.Azure/tree/develop/IntegrationTests/AzurePubSub
有一段时间让样品运行。我已经记录了我采取的步骤;
使用VS 2k12,NSB 4.0(最新稳定版)
OrderService,上面替换为NuGet包(NServiceBus.Hosting.Azure)。
OrderWebsite删除了NServiceBus,NServiceBus.Azure,NServiceBus.Core,Common.Logging
订购网站,上面替换为NuGet包(NServiceBus.Azure)。
实现了干净的解决方案构建!
调试
无法加载文件或程序集' Microsoft.WindowsAzure.Diagnostics,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
手动将绑定重定向添加到OrderWebsite(可选择引用NuGet for Diagnostics)
无法加载文件或程序集' Microsoft.WindowsAzure.Diagnostics,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
手动将绑定重定向添加到OrderService(可选择参考NuGet for Diagnostics)
调试
无法加载文件或程序集' Microsoft.WindowsAzure.Diagnostics,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
将Microsoft.WindowsAzure.Diagnostics参考2.1.0.0(文件版本2.1.6493.0)添加到OrderService和OrderWebsite(左侧绑定重定向)
调试 OrderWebsite很好地加载。 OrderService陷入循环启动和停止通过Azure Compute Emulator看到。 永远不会调用EndpointConfiguration ctor,也不会调用DefineRouting类IProvideConfiguration实现。
Azure计算模拟器输出:
[fabric]角色实例:deployment21(119).AzureService.OrderService.0 [面料]角色状态不健康 [Diagnostics]:UpdateState(Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorStartupInfo,Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorConfiguration,) [诊断]:获取互斥锁 [诊断]信息:C:\ Users \ Ryan \ AppData \ Local \ dftmp \ Resources \ a903dc1b-98a5-4a78-b04d-c533e881564d \ directory \ DiagnosticStore \ Monitor [诊断]信息:D:\ GitHub \ NServiceBus.Azure \ IntegrationTests \ AzurePubSub \ csx \ Debug \ roles \ OrderService \ diagnostics \ x64 \ monitor \ MonAgentHost.exe -LocalPath" C:\ Users \ Ryan \ AppData \当地\ dftmp \资源\ a903dc1b-98a5-4a78-b04d-c533e881564d \目录\ DiagnosticStore \显示器" -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-ShutDown-81011d9e243b47bc8941b805e7146ce3 -InitializedEvent WADM-StartUp-81011d9e243b47bc8941b805e7146ce3 -parent 5704 -events [fabric]角色状态停止 [诊断]:创建配置通道服务器 [MonAgentHost]输出:当发出WADDM-ShutDown-81011d9e243b47bc8941b805e7146ce3信号时,代理将退出。 [MonAgentHost]输出:初始化代理后,将发出WADM-StartUp-81011d9e243b47bc8989b805e7146ce3信号。 [MonAgentHost]输出:注册为事件消费者。 [MonAgentHost]输出:当父进程5704退出时,代理将退出。 [MonAgentHost]输出:监控代理已启动 [诊断]:启动配置通道轮询 [runtime]角色入口点。打电话给OnStart() [runtime]角色入口点。已完成OnStart() [runtime]角色入口点。调用Run() [runtime]角色入口点。已完成Run()==>角色再循环引发 [runtime]角色实例回收正在开始 [runtime]角色入口点。呼叫OnStop() [runtime]角色入口点。已完成OnStop() [fabric]角色状态忙碌
这就是它一遍又一遍地循环的地方。 使用OrderService的Worker Role初始化事件时,显然会发生错误,但我似乎无法找到出错的地方。
任何人对如何确定原因都有任何想法?
非常感谢, 莱恩
答案 0 :(得分:0)
最新稳定的NServiceBus.Azure适用于Azure SDK 2.0。我强烈建议使用2.0,你可以在同一台开发机器上同时使用2.0和2.1。
我还将从源代码构建NSB和NSB.Azure并调试Azure传输初始化。有几个问题,Yves已经修复但我不确定这是否已经发布。我不知道你的配置,也不能真正说出来,但如果你得到不正确的队列名称,它就会默默地失败。
答案 1 :(得分:0)
实际上,这与visual studio工具版本(2.1)和nservicebus 4.0对ServiceRuntime和Diagnostics程序集(2.0)的引用之间的不兼容性有关。在运行时,他们需要匹配,否则您将在部署时看到奇怪的行为。
您可以通过两种方式解决此问题,使用VS工具2.0(在项目属性的某处应该有一个开关),或者引用最新版本的NServicebus.Azure 4.1。如果一切顺利,我们应该很快就能发布这个新版本。
我也很痛苦地意识到这个兼容性问题也会困扰我们未来的版本,所以我希望将来能够将nservicebus与特定的windows azure sdk版本分离。如果你想跟踪那个进展,这是github问题。 https://github.com/Particular/NServiceBus.Azure/issues/26