4

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 ブローカーがあるのか​​ということです。助けてくれてありがとう!

4

3 に答える 3

1

使用している Java Broker のバージョンは何ですか?

答えが 0.30 の場合、PlainPasswordFile/Base64MD5PasswordFile 認証プロバイダー (出荷された構成では前者がデフォルト) は、クライアントが SSL で構成された AMQP ポートを使用している場合にのみ、PLAIN SASL メカニズムをクライアントに提供します。これは、パスワードが保護されていないポートをクリア テキストで移動するのを防ぐために行われます。

于 2014-10-17T08:23:06.530 に答える