带有RabbitMQ客户端认证异常的QPID代理

我正在使用Java QPID代理进行测试。 我能够使用质子客户端发送和接收消息,但使用匿名身份验证。 我有兴趣测试打开验证和了解质子客户端不支持(还)。 因此我下载了rabbitMQ客户端jar。 我正在使用密码文件身份验证(与QPID一起提供)。

我设置了我的RabbitMQ客户端连接工厂,如下所示:

    connectionFactory = new ConnectionFactory();
    connectionFactory.setHost("localhost");
    connectionFactory.setUsername("guest");
    connectionFactory.setPassword("guest");

代码在此行上失败(特别是在getConnection上)。

    connection = RabbitMQConnectionFactory.getInstance().getConnection();

这是例外:

java.io.IOException:找不到兼容的身份验证机制 - 服务器在com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:309)上提供[CRAM-MD5] at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory .java:590)at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:612)at com.vue.rabbit.core.RabbitMQConnectionFactory.getConnection(RabbitMQConnectionFactory.java:37)at com.vue.rabbit.producer。 SimpleProducer.main(SimpleProducer.java:25)

如果我将QPID代理更改为使用匿名身份验证,并且更改客户端不设置用户/密码,我会得到类似的“服务器提供的[ANONYMOUS]”异常

难道我做错了什么? 这些应该是兼容的? 有些单独的问题是为什么如果它们都支持相同的在线AMQP协议,那么为什么还会有Java和C ++ QPID代理? 预先感谢任何帮助!


实际上,最新的QPID支持普通的SASL,但不推荐。 请参阅文档。 在你的config.json包含如下内容: "secureOnlyMechanisms": []如下所示:

 "authenticationproviders" : [ {
    "id" : "798fc4a5-8edb-4b42-b1b2-8f7e9be8cccb",
    "name" : "passwordFile",
    "type" : "PlainPasswordFile",
    "path" : "${qpid.home_dir}${file.separator}etc${file.separator}passwd",
    "secureOnlyMechanisms": [],
    "preferencesproviders" : [ {
      "id" : "1dcee789-be1b-49cc-9032-3bc4b974d1d6",
      "name" : "fileSystemPreferences",
      "type" : "FileSystemPreferences",
      "path" : "${qpid.work_dir}${file.separator}user.preferences.json"
    } ]

你使用的是什么版本的Java Broker?

如果答案为0.30,则PlainPasswordFile / Base64MD5PasswordFile身份验证提供程序(前者是已发货配置中的默认身份验证提供程序)仅在客户端使用配置有SSL的AMQP端口时向客户端提供PLAIN SASL机制。 这样做是为了防止密码在未受保护的端口上以明文形式传播。

链接地址: http://www.djcxy.com/p/34123.html

上一篇: QPID broker with RabbitMQ client authentication exception

下一篇: Any real JAVA AMQP examples to understand term 'wire