我试图从.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);
}
}
答案 0 :(得分:1)
当前版本的NMS客户端库中不支持AMQP。在svn中有一个实验性实现,您可以尝试但是您需要从源构建它,然后使用它自己的ConnectionFactory实例,因为NMS API库没有它的映射。发布AMQP版本时,您应该能够使用这样的代码,但是您需要同时拥有NMS API lib和项目中引用的NMS.AMQP lib。
答案 1 :(得分:0)
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库。
答案 2 :(得分:0)
类似的事情也发生在我身上。我通过确保引用&#34; Apache.NMS&#34;来解决它。和#34; Apache.NMS.ActiveMQ&#34;被列入该项目。我使用NuGet包管理器来安装它们。