C# 无法从.NET连接到ActiveMQ:没有IConnectionFactory实现
我正在尝试从.NET客户端连接到ActiveMQ。ActiveMQ服务器已启动并正在运行。我可以从浏览器访问管理控制台 当我运行以下代码时,我在尝试创建NMSCOnnectionFactory时遇到一个异常。我不知道为什么会发生这种情况,也不知道如何解决它。我尝试了各种端口,但这似乎是问题所在。有什么想法吗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
"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软件包管理器来安装它们