使用 Amqp.net lite 连接到 qpid 队列。抛出异常 amqp:connection:forced
Connecting to a qpid queue using Amqp.net lite. throws exception amqp:connection:forced
我正在尝试设置一个简单的示例来连接到队列并向队列发送消息。我们删除了 qpid 的身份验证,这样就不需要用户名和密码了。发生的事情是,一旦它尝试发送消息,我收到消息 amqp:connection:forced
的 AMQP 异常
这个异常是什么意思?知道我可能错过了什么吗?
string broker = "amqp://linuxlab.netigrate.net:5672";
string outQueue = "toVCC";
string inQueue = "fromVCC";
Connection.DisableServerCertValidation = true;
Connection connection = null;
try
{
Address address = new Address(broker);
connection = new Connection(address);
Session session = new Session(connection);
SenderLink sender = new SenderLink(session, "sendAndRecieve.send", outQueue);
Message message = new Message("Hello");
sender.Send(message);
来自 amqp:connection:forced 错误代码的 AMQP 1.0 规范:
An operator intervened to close the connection for some reason. The client could retry at some later date.
所以远程端告诉您的客户端它无法连接。
我会检查代理端的日志,看看是否有一些关于连接的有意义的错误信息。
当 AMQP 版本不匹配时,通常会出现此错误。在您的情况下,Amqp.Net Lite 仅使用 AMQP 1.0 版本,而 Qpidd 代理可能 运行 仅使用 AMQP 0-10 版本。获得提示的一种方法是在执行代理之前在您的环境中 SET QPID_LOG_ENABLE=trace+ 。跟踪应该暴露不匹配。
要让 Qpidd 代理使用 AMQP 1.0,您可以使用以下两种方法之一:
- 使用 --load-module amqp.dll(或 linux 系统上的 amqp.so)显式加载 AMQP 1.0 库。
- 使用 --module-dir somepath 指示代理加载所有模块,其中路径是包含 amqp.dll(或 .so)的文件夹的名称文件。
如果您从源代码构建 Qpidd,您还需要构建 qpid-proton 项目以提供 AMQP 1.0 支持。
我正在尝试设置一个简单的示例来连接到队列并向队列发送消息。我们删除了 qpid 的身份验证,这样就不需要用户名和密码了。发生的事情是,一旦它尝试发送消息,我收到消息 amqp:connection:forced
的 AMQP 异常这个异常是什么意思?知道我可能错过了什么吗?
string broker = "amqp://linuxlab.netigrate.net:5672";
string outQueue = "toVCC";
string inQueue = "fromVCC";
Connection.DisableServerCertValidation = true;
Connection connection = null;
try
{
Address address = new Address(broker);
connection = new Connection(address);
Session session = new Session(connection);
SenderLink sender = new SenderLink(session, "sendAndRecieve.send", outQueue);
Message message = new Message("Hello");
sender.Send(message);
来自 amqp:connection:forced 错误代码的 AMQP 1.0 规范:
An operator intervened to close the connection for some reason. The client could retry at some later date.
所以远程端告诉您的客户端它无法连接。
我会检查代理端的日志,看看是否有一些关于连接的有意义的错误信息。
当 AMQP 版本不匹配时,通常会出现此错误。在您的情况下,Amqp.Net Lite 仅使用 AMQP 1.0 版本,而 Qpidd 代理可能 运行 仅使用 AMQP 0-10 版本。获得提示的一种方法是在执行代理之前在您的环境中 SET QPID_LOG_ENABLE=trace+ 。跟踪应该暴露不匹配。
要让 Qpidd 代理使用 AMQP 1.0,您可以使用以下两种方法之一:
- 使用 --load-module amqp.dll(或 linux 系统上的 amqp.so)显式加载 AMQP 1.0 库。
- 使用 --module-dir somepath 指示代理加载所有模块,其中路径是包含 amqp.dll(或 .so)的文件夹的名称文件。
如果您从源代码构建 Qpidd,您还需要构建 qpid-proton 项目以提供 AMQP 1.0 支持。