Topshelf部署Windows服务调用Apache.NMS.ActiveMQ报IConnectionFactory创建错误
问题原因
该异常的核心是Apache.NMS核心包与Apache.NMS.ActiveMQ实现包版本不兼容:高版本的Apache.NMS核心接口中新增了CreateConnectionAsync抽象方法,但你当前使用的1.8.0版本Apache.NMS.ActiveMQ实现包未提供该方法的实现,导致接口契约不匹配。
解决方案
按优先级依次尝试以下操作即可解决:
- 统一依赖包版本
Apache.NMS.ActiveMQ 1.8.0仅适配同版本的Apache.NMS核心包,卸载所有更高版本的Apache.NMS包,将两个包的版本都锁定为1.8.0即可。Nuget包管理器控制台执行命令:
Install-Package Apache.NMS -Version 1.8.0 Install-Package Apache.NMS.ActiveMQ -Version 1.8.0
- 清理错误的程序集绑定重定向
打开项目配置文件(app.config),检查<runtime>下的<assemblyBinding>节点,删除所有针对Apache.NMS、Apache.NMS.ActiveMQ的版本重定向规则,重新编译后VS会自动生成正确的绑定配置。 - 可选升级方案
如果项目允许升级依赖,直接将Apache.NMS和Apache.NMS.ActiveMQ两个包同步升级到最新稳定版,保持二者版本号完全一致即可解决接口不匹配问题。
操作完成后清理解决方案,重新编译运行即可。
内容的提问来源于stack exchange,提问作者Jheferson
相关产品推荐
相关产品推荐

