Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ActiveMQ与AMQP.NET Lite版本_Activemq_Amqp - Fatal编程技术网

ActiveMQ与AMQP.NET Lite版本

ActiveMQ与AMQP.NET Lite版本,activemq,amqp,Activemq,Amqp,根据,ActiveMQ拒绝与1.0.0以外的AMQP协议版本的连接 根据,AMQP.NET Lite发送0.1.0.0。同时,它也声称这样做 显然,ActiveMQ拒绝来自AMQP.NET Lite的连接,并使用“来自非AMQP v1.0 client.AMQP的连接尝试,0,1,0,0” 客户有: Address address = new Address("amqp://localhost:5672"); Connection connection = new Connection(addr

根据,ActiveMQ拒绝与1.0.0以外的AMQP协议版本的连接

根据,AMQP.NET Lite发送0.1.0.0。同时,它也声称这样做

显然,ActiveMQ拒绝来自AMQP.NET Lite的连接,并使用“来自非AMQP v1.0 client.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:54352@5672
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配置包括:

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

在我看来,ActiveMQ需要1.0.0.0版,而amqpnetlite发送0.1.0.0版


从这里到哪里?

ActiveMQ和AMQP.NET Lite都支持ISO/IEC标准1.0版本的AMQP。协议标题“AMQP0100”表示协议的版本1.0。大家都知道AMQP.NETLite可以与ActiveMQ一起使用,所以我怀疑您还有其他一些配置问题

我的假设是,根据您是否配置了真正的身份验证插件,您还没有关闭代理强制要求客户端通过SASL握手(通过SASL anonymous或SASL plain)进行连接的功能。我敢打赌,如果您通过添加选项
wireFormat.allowNonSaslConnections=true
来配置代理,它可能会工作


根据您提供的信息,.NET客户端未使用SASL,因此代理拒绝使用它。默认情况下,SASL头将是“AMQP3100”

,ActiveMQ需要身份验证。试一试

string queueName = "q1";
Connection connection = new Connection(new Address("amqp://user:pwd@localhost: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配置文件中。另外,建议使用异步API来避免阻塞I/O调用。

人们一直在对ActiveMQ使用.NET lite客户端,您需要提供更多信息,因为代码看起来都是正确的,为问题添加了一些信息。。。谢谢。谢谢,我在问题中添加了一些信息。。。在我看来,ActiveMQ需要1.0.0.0版,而amqpnetlite发送0.1.0.0版。我想知道我错过了什么?是的,就是它。如果ActiveMQ记录了问题所在,则会有所帮助。该方法有三种情况,返回false(bad),并且不提供记录问题所在的方法。这是一种验证-->