C# 无法从.NET连接到ActiveMQ:没有IConnectionFactory实现

C# 无法从.NET连接到ActiveMQ:没有IConnectionFactory实现,c#,activemq,.net-4.5,apache-nms,C#,Activemq,.net 4.5,Apache Nms,我正在尝试从.NET客户端连接到ActiveMQ。ActiveMQ服务器已启动并正在运行。我可以从浏览器访问管理控制台 当我运行以下代码时,我在尝试创建NMSCOnnectionFactory时遇到一个异常。我不知道为什么会发生这种情况,也不知道如何解决它。我尝试了各种端口,但这似乎是问题所在。有什么想法吗 "No IConnectionFactory implementation found for connection URI: amqp://localhost:61616/" publi

我正在尝试从.NET客户端连接到ActiveMQ。ActiveMQ服务器已启动并正在运行。我可以从浏览器访问管理控制台

当我运行以下代码时,我在尝试创建NMSCOnnectionFactory时遇到一个异常。我不知道为什么会发生这种情况,也不知道如何解决它。我尝试了各种端口,但这似乎是问题所在。有什么想法吗

"No IConnectionFactory implementation found for connection URI: amqp://localhost:61616/"

public static void Main(string[] args)
{
  try
  {
    Uri connecturi = new Uri("amqp://localhost:61616");

    Console.WriteLine("About to connect to " + connecturi);

    IConnectionFactory factory = new NMSConnectionFactory(connecturi, "Bob", "protocol:" +   "amqp1.0");
  }
  catch (Exception e)
  {
    Console.WriteLine("Exception {0}.", e);
  }
}

当前版本的NMS客户端库中不支持AMQP。在svn中有一个实验性的实现,您可以尝试,但是您需要从源代码构建它,然后使用它自己的ConnectionFactory实例,因为NMS API库没有它的映射。当AMQP版本发布时,您应该能够使用这样的代码,但您需要在项目中同时引用NMS API库和NMS.AMQP库

如Tim所述,当前版本中不支持AMQP。但是,通过将配置文件添加到项目中,原始代码段可以工作(无需链接到特定的提供程序实现程序集)。使用以下内容命名文件
nmsprovider amqp.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <provider assembly="Apache.NMS.AMQP.dll" classFactory="Apache.NMS.AMQP.ConnectionFactory"/>
</configuration>


有了这个文件,您只需要在编译时引用
Apache.NMS.dll
程序集。当实例化
NMSConnectionFactory
对象时,它将尝试加载已知协议的实现提供程序。如果在连接URI中指定了未知协议(如amqp:),则它将按照
nmsprovider-{protocol}.config
的格式查找文件名。它将加载该文件以查找程序集和类工厂名称。这允许主NMS库在运行时使用新的提供程序实现进行扩展。

类似的情况也发生在我身上。我通过确保项目中包含“Apache.NMS”和“Apache.NMS.ActiveMQ”引用来解决这个问题。我使用NuGet软件包管理器来安装它们