You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apache.NMS.ActiveMQ v5.18.2在C#中运行发布者代码遇tcp匹配错误

问题描述

使用C#的Apache.NMS.ActiveMQ v5.18.2运行发布者代码时,抛出以下错误:

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); // 错误发生在此行

已尝试从最新版本2.1.0开始降级ActiveMQ NuGet包,但问题未解决。

解决方案
  • 检查NuGet依赖完整性:确保同时安装Apache.NMS核心包,且版本与Apache.NMS.ActiveMQ完全匹配。TCP传输的实现依赖核心包组件,版本不匹配或缺失会导致找不到传输实例。
  • 调整Broker URI格式:移除URI中的activemq:前缀,直接使用tcp://host:port格式。部分版本的NMSConnectionFactory对前缀解析存在兼容问题,示例代码:
    String brokerUri = $"tcp://{host}:{port}";
    
  • 手动指定传输工厂:如果URI调整无效,可显式创建TCP传输工厂并传入连接工厂,示例:
    Uri uri = new Uri($"tcp://{host}:{port}");
    ITransportFactory transportFactory = new TcpTransportFactory();
    ITransport transport = transportFactory.CreateTransport(uri);
    NMSConnectionFactory factory = new NMSConnectionFactory(transport);
    
  • 清理重装NuGet包:删除项目的packages和obj目录,重新安装所有NuGet依赖,避免缓存的损坏包引发异常。

内容的提问来源于stack exchange,提问作者NAGALAXMI SOMAYAJI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:35:09