大约一年前,我能够让 NSB 站起来,并在 Azure 上以 WorkerRole 出色地工作。我们实施了一些服务。这需要一些工作,围绕依赖项和版本有几个问题,但是经过大量调整后,我们让一切正常运行。
快进到今天,新产品试图建立一个简单的例子,在 NSB v4.0 的探索阶段对我们正在构建的系统进行概念验证。我想支持位于此处的 AzurePubSub 示例;https://github.com/Particular/NServiceBus.Azure/tree/develop/IntegrationTests/AzurePubSub
只是让样本运行起来真是太费时间了。我已经记录了我所采取的步骤;
使用 VS 2k12、NSB 4.0(最新稳定版)
- 打开 AzurePubSub 项目
- 提示将项目转换为目标 Windows Azure 工具 - v2.1(已转换)
- 从 MyMessages 中删除 NSB ref,替换为 Nuget NServiceBus.Interfaces pkg
- 在 MyMessages 上清洁构建
- OrderService,丢弃 NServiceBus、NServiceBus.Core、NServiceBus.Azure、NServiceBus.Hosting.Azure、Common.Logging
OrderService,上面替换为 NuGet 包 (NServiceBus.Hosting.Azure)。
OrderWebsite 丢弃了 NServiceBus、NServiceBus.Azure、NServiceBus.Core、Common.Logging
OrderWebsite,上面替换为 NuGet 包 (NServiceBus.Azure)。
实现了干净的解决方案构建!
调试
无法加载文件或程序集“Microsoft.WindowsAzure.Diagnostics,Version=2.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
手动添加了到 OrderWebsite 的绑定重定向(可选地可以参考 NuGet 进行诊断)
- 调试
无法加载文件或程序集“Microsoft.WindowsAzure.Diagnostics,Version=2.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
手动添加了对 OrderService 的绑定重定向(可选地可以参考 NuGet 进行诊断)
调试
无法加载文件或程序集“Microsoft.WindowsAzure.Diagnostics,Version=2.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
- 删除 Microsoft.WindowsAzure.Diagnostics 参考 2.0.0.0
将 Microsoft.WindowsAzure.Diagnostics 对 2.1.0.0(文件版本 2.1.6493.0)的引用添加到 OrderService 和 OrderWebsite(左绑定重定向)
Debug OrderWebsite 加载得很好。OrderService 陷入循环启动和停止通过 Azure Compute Emulator 看到。EndpointConfiguration ctor 永远不会被调用,DefineRouting 类 IProvideConfiguration 实现也不会被调用。
Azure 计算模拟器输出:
当父进程 5704 退出时,代理将退出。[MonAgentHost] 输出:监控代理已启动 [诊断]:启动配置通道轮询 [运行时] 角色入口点。CALLING OnStart() [运行时] 角色入口点。已完成 OnStart() [运行时] 角色入口点。CALLING Run() [运行时] 角色入口点。COMPLETED Run() ==> ROLE RECYCLING INITIATED [runtime] 角色实例回收正在开始 [runtime] Role entrypoint 。CALLING OnStop() [运行时] 角色入口点。COMPLETED OnStop() [fabric] 角色状态忙碌 ROLE RECYCLING INITIATED [runtime] 角色实例回收正在开始 [runtime] Role entrypoint 。CALLING OnStop() [运行时] 角色入口点。COMPLETED OnStop() [fabric] 角色状态忙碌 ROLE RECYCLING INITIATED [runtime] 角色实例回收正在开始 [runtime] Role entrypoint 。CALLING OnStop() [运行时] 角色入口点。COMPLETED OnStop() [fabric] 角色状态忙碌
这就是它一遍又一遍地循环的地方。使用 OrderService 的 Worker Role 初始化事物时显然会发生错误,但是我似乎无法找到问题所在。
有人对我如何查明原因有任何想法吗?
非常感谢,瑞安