Sco*_*ott 4 java authentication amqp rabbitmq qpid
我正在使用 Java QPID 代理进行测试。我能够使用质子客户端发送和接收消息,但使用匿名身份验证。我有兴趣在打开身份验证的情况下进行测试,并了解质子客户端不支持(尚)。因此,我下载了 rabbitMQ 客户端 jar。我正在使用密码文件身份验证(随 QPID 一起提供)。
我像这样设置我的 RabbitMQ 客户端连接工厂:
connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost");
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest");
Run Code Online (Sandbox Code Playgroud)
此行上的代码失败(特别是在 getConnection 上)。
connection = RabbitMQConnectionFactory.getInstance().getConnection();
Run Code Online (Sandbox Code Playgroud)
这是例外:
java.io.IOException:找不到兼容的身份验证机制 - 服务器在 com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:309) 处提供 [CRAM-MD5] 在 com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory) .java:590) 在 com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:612) 在 com.vue.rabbit.core.RabbitMQConnectionFactory.getConnection(RabbitMQConnectionFactory.java:37) 在 com.vue.rabbit.producer。 SimpleProducer.main(SimpleProducer.java:25)
如果我将 QPID 代理更改为使用匿名身份验证,并且还将客户端更改为不设置用户/密码,则会收到类似的“服务器提供 [ANONYMOUS]”异常
难道我做错了什么?这些应该是兼容的?有点不同的问题是,如果 Java 和 C++ QPID 代理都支持相同的在线 AMQP 协议,为什么还要存在它们?在此先感谢您的帮助!
实际上,最新的 QPID 中支持普通 SASL,但不建议这样做。请参阅文档。在您的config.json包含中类似:"secureOnlyMechanisms": []如:
“身份验证提供者”:[{
"id": "798fc4a5-8edb-4b42-b1b2-8f7e9be8cccb",
"name" : "密码文件",
"type": "PlainPasswordFile",
"path" : "${qpid.home_dir}${file.separator}etc${file.separator}passwd",
"secureOnlyMechanisms": [],
“首选项提供者”:[{
"id": "1dcee789-be1b-49cc-9032-3bc4b974d1d6",
"name" : "fileSystemPreferences",
“类型”:“文件系统首选项”,
“路径”:“${qpid.work_dir}${file.separator}user.preferences.json”
]]