Java QPID ブローカーを使用してテストしています。プロトンクライアントを使用してメッセージを送受信できましたが、匿名認証を使用していました. 認証をオンにしてテストすることに興味があり、proton クライアントが (まだ) サポートしていないことを理解しています。したがって、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] を提供しました 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 プロトコルをサポートしているのに、なぜ Java と C++ QPID ブローカーがあるのかということです。助けてくれてありがとう!