【问题标题】:ActiveMQ Amqp C# ConnectionFactory and IConnectionFactoryActiveMQ Amqp C# ConnectionFactory 和 IConnectionFactory
【发布时间】:2014-07-24 12:00:20
【问题描述】:

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

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

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

但是对于“Apache.NMS.ActiveMQ”中的版本 1-0-*,这不起作用, (此处的示例使用 IConnectionFactory 代替:http://activemq.apache.org/nms/examples.html 但无法在此处输入 HostName、Port、VirtualHost、UserName、Password。 )

如何使用“Apache.NMS.ActiveMQ”,并在代码中使用用户名、密码进行连接。

谢谢:)

【问题讨论】:

    标签: activemq amqp


    【解决方案1】:

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

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

    你可以贡献

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

    【讨论】:

      【解决方案2】:

      ActiveMQ 是一个multi protocol 代理。 AMQP 1.0 是它支持的有线协议之一。

      但是,Apache.NMS.ActiveMQ 库使用 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,但还没有。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-20
        • 2016-03-30
        • 2014-07-20
        • 2016-04-01
        • 1970-01-01
        • 2014-04-20
        • 2017-08-19
        • 1970-01-01
        相关资源
        最近更新 更多