ActiveMQ Amqp C#ConnectionFactory和IConnectionFactory

时间:2014-06-04 00:40:29

标签: activemq amqp

我正在使用Amqp和ActiveMQ,它需要版本1-0- ,而不是旧版本0-9 -

在版本0-9- *中使用" RabbitMQ.Client" (我使用RabbitMQ并切换到ActiveMQ),以下C#代码可以连接到一个代理。

factory = new ConnectionFactory()
                    {
                        Protocol = Protocols.FromEnvironment(),
                        HostName = IpAddress,
                        Port = Port,
                        VirtualHost = VirtualHost,
                        UserName = User,
                        Password = Password
                    };

但是在#34; Apache.NMS.ActiveMQ"中使用版本1-0- *,这不起作用, (此处的示例改为使用IConnectionFactory:http://activemq.apache.org/nms/examples.html 但无法在那里输入HostName,Port,VirtualHost,UserName,Password。 )

我如何使用" Apache.NMS.ActiveMQ",并在代码中与用户名,密码建立连接。

谢谢:)

2 个答案:

答案 0 :(得分:2)

ActiveMQ是multi protocol经纪人。 AMQP 1.0是它支持的有线协议之一。

但是,Apache.NMS.ActiveMQ lib正在使用OpenWire协议(AMQ上的默认端口61616)。即使使用用户名和密码,也可以直接使用NMS连接到OpenWire。

IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616);
using (IConnection connection = factory.CreateConnection("user1234","s3cr3tp4ssw0rd")
{
     using (ISession session = connection.CreateSession ()) 
     {
       // send a message or whatever

如果您真的想使用AMQP进行连接,我建议使用QPid proton lib而不是NMS。 NMS有something going on as well,但它还没有。

答案 1 :(得分:0)

现在有一个Apache ActiveMQ发布的Apache.NMS.AMQP版本,它可以在Nuget中使用。

https://www.nuget.org/packages/Apache.NMS.AMQP

您可以贡献

https://github.com/apache/activemq-nms-amqp