我正在使用 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) 在 com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory) 提供 [CRAM-MD5] .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 协议,为什么会有它们?提前感谢您的帮助!