错误:NewInstance 在使用 ActiveMQ 时找不到 id = tcp 的匹配项

Error: NewInstance failed to find a match for id = tcp while using ActiveMQ

提问人:NAGALAXMI SOMAYAJI 提问时间:10/17/2023 最后编辑:Justin BertramNAGALAXMI SOMAYAJI 更新时间:11/16/2023 访问量:207

问:

我正在使用 Apache.NMS.ActiveMQ v5.18.2 在 C# 中运行 ActiveMQ 示例发布者代码,但我得到:

Apache.NMS.NMSConnectionException: 'Error creating transport.' Exception: NewInstance failed to find a match for id = tcp

这是我的代码:

String host = env("ACTIVEMQ_HOST", "localhost");
int port = Int32.Parse(env("ACTIVEMQ_PORT", "61616"));

String brokerUri = "activemq:tcp://" + host + ":" + port;

NMSConnectionFactory factory = new NMSConnectionFactory(brokerUri);

IConnection connection = factory.CreateConnection(user, password); // error occurs here

从最新版本 2.1.0 开始,我尝试使用不同版本(降级)的 ActiveMQ nuget 包,但没有任何效果。

C# ActiveMQ

评论

0赞 Matt Pavlovich 10/17/2023
奇怪的是,您收到该错误,因为这意味着已注册方案“tcp”,但返回null factoryType。我怀疑这是解决方案中的一个问题 - 没有一致的 API 和 ActiveMQ NMS 版本以及 .NET 运行时版本。我建议打开一个 JIRA: issues.apache.org/jira 来引起维护者的注意。

答:

0赞 Sequiterr 11/10/2023 #1

解决方案:使用 Apache.NMS 和 Apache.NMS.ActiveMQ 版本 2.0.0

我今天遇到了同样的问题。事实证明,NuGet 包的 2.1.0 版仅发布了大约 2 个月 (https://www.nuget.org/packages/Apache.NMS/2.0.0)。

ActiveMQ的 版本 5.17.3 和 5.18.3

C# 包:(不起作用) Apache.NMS 版本=“2.1.0” Apache.NMS.ActiveMQ 版本=“2.1.0”

C# 包:(确实有效) Apache.NMS 版本=“2.0.0” Apache.NMS.ActiveMQ 版本=“2.0.0”