2017-03-27 13 views
0

ActiveMQ(line 151 in AmqpWireFormat)は、1.0.0以外のAMQPプロトコルバージョンでの接続を拒否します。ActiveMQとAMQP .NET Liteのバージョン

AMQP .NET Lite(line 411 in Connection)は、0.1.0.0を送信します。同時にそれはFull control of AMQP 1.0 protocol behaviorをすると主張する。

明らかに、ActiveMQはAMQP .NET Liteからの接続を「AMQP以外のクライアントからの接続試行AMQP、0,1,0,0」と拒否します。

クライアントが行います。

Address address = new Address("amqp://localhost:5672"); 
Connection connection = new Connection(address); 
Session session = new Session(connection); 

そしてActiveMQのログ:

コマンドラインで
2017-03-28 09:11:28,403 | DEBUG | Transport Connection to: tcp://0:0:0:0:0:0:0:1:54352 failed: org.apache.activemq.transport.amqp.AmqpProtocolException: Connection from client using unsupported AMQP attempted | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///0:0:0:0:0:0:0:1:[email protected] 
org.apache.activemq.transport.amqp.AmqpProtocolException: Connection from client using unsupported AMQP attempted 
     at org.apache.activemq.transport.amqp.protocol.AmqpConnection.onAMQPData(AmqpConnection.java:339)[activemq-amqp-5.14.4.jar:5.14.4] 
     at org.apache.activemq.transport.amqp.AmqpProtocolDiscriminator.onAMQPData(AmqpProtocolDiscriminator.java:96)[activemq-amqp-5.14.4.jar:5.14.4] 
     at org.apache.activemq.transport.amqp.AmqpTransportFilter.onCommand(AmqpTransportFilter.java:107)[activemq-amqp-5.14.4.jar:5.14.4] 
     at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)[activemq-client-5.14.4.jar:5.14.4] 
     at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233)[activemq-client-5.14.4.jar:5.14.4] 
     at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215)[activemq-client-5.14.4.jar:5.14.4] 
     at java.lang.Thread.run(Thread.java:745)[:1.8.0_112] 

それは言う:その後、

WARN | Connection attempt from non AMQP v1.0 client. AMQP,0,1,0,0 

ActiveMQの接続を中止します。

ActiveMQの設定が含まれています:ActiveMQのは、バージョン1.0.0.0とamqpnetliteは0.1.0.0を送信期待するよう

<transportConnectors> 
    <transportConnector name="amqp" uri="amqp://0.0.0.0:5672" /> 
</transportConnectors> 

これをすべて私には見えます。

ここからはどこですか?

+0

皆さんは、常にActiveMQに対して.NET Liteクライアントを使用しています。コードにすべて正しいと思われる情報を追加する必要があります –

+0

質問にいくつかの情報を追加しました。ありがとう。 –

答えて

2

デフォルトでは、ActiveMQでは認証が必要です。試してみてください

string queueName = "q1"; 
Connection connection = new Connection(new Address("amqp://user:[email protected]:5672")); 
Session session = new Session(connection); 
SenderLink sender = new SenderLink(session, "sender", queueName); 
Message message = new Message("Hello World"); 
sender.Send(message); 
connection.Close(); 

ユーザ名とパスワードは、users.properties configファイルに入れる必要があります。また、非同期APIを使用してI/O呼び出しをブロックしないようにすることをお勧めします。

+0

はい、それでした。 ActiveMQで問題が記録されている場合は、役立ちます。このメソッドには、false(bad)を返す3つのケースがあり、問題の内容を記録する方法はありません。 –

0

ActiveMQとAMQP .NET Liteの両方が、AMQPのISO/IEC標準1.0バージョンをサポートしています。プロトコルヘッダ "AMQP0100"は、プロトコルのバージョン1.0を示す。 AMQP .NET LiteはActiveMQで動作することが知られているので、他の設定上の問題があると思われます。

+0

ありがとう、私は質問にいくつかの情報を追加しました... ActiveMQはバージョン1.0.0.0を予期し、amqpnetliteが0.1.0.0を送信するように見えます。私は何が不足しているのだろうか? –

0

実際の認証プラグインを設定したかどうかに応じて、クライアントがSASL匿名またはSASLプレーン経由でSASLハンドシェイクを介して接続するようにブローカを強制することをお断りしていないことを前提としています。私はあなたがオプションwireFormat.allowNonSaslConnections=trueを追加してブローカーを設定した場合、おそらくそれがうまくいくと考えています。

提供した情報から、.NETクライアントはSASLを使用していないため、ブローカはそれを拒否しています。 SASLヘッダーは "AMQP3100"

+0

これ、または認証 - > http://stackoverflow.com/a/43057456/2875848 –

関連する問題