我正在尝试设置一个简单的示例来连接并向队列发送消息。我们删除了qpid的身份验证,以便不需要用户名和密码。会发生什么是一旦它尝试发送消息我得到一个AMQP异常,消息amqp:connection:forced
这个例外是什么意思?以及我可能错过的任何想法?
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);
答案 0 :(得分:0)
来自AMQP 1.0规范amqp:connection:强制错误代码:
An operator intervened to close the connection for some reason. The client could retry at some later date.
所以远程方告诉你的客户无法连接。
我会检查代理端的日志,看看连接上是否有一些有意义的错误信息。
答案 1 :(得分:0)
当AMQP版本不匹配时,通常会显示此错误。在您的情况下,Amqp.Net Lite仅使用版本AMQP 1.0,而Qpidd代理可能只运行版本AMQP 0-10。获取提示的一种方法是在执行代理之前在您的环境中 SET QPID_LOG_ENABLE = trace + 。跟踪应该暴露不匹配。
要让Qpidd代理使用AMQP 1.0,您可以使用以下两种方法之一:
如果您从源代码构建Qpidd,您还需要构建qpid-proton项目以提供AMQP 1.0支持。