当我尝试在 C# 代码中使用 AMQP 发送/发布消息时,遇到错误。 下面是错误: {错误(条件:amqp:未实现,描述:sasl-mechanisms(sasl-server-mechanisms:[匿名]))}
下面是部分代码,Connect()方法是一个内部方法,负责创建AMQP连接会话并连接到Solace。
此方法抛出异常。
BrokerQueue 是我打算向其发送消息的主题。
public void Send(string text)
{
Connect();
var sender = new Amqp.SenderLink(session, BrokerQueue);
sender.Send(text);
}
连接到 Solace 主机时,似乎出现了与 SASL 相关的错误。 我正在使用非安全 amqp 静态连接字符串,如下所示。
amqp://默认:默认@:5673/
5673 是我的主机为 AMQP 协议公开的端口号。 我确信我的代码可以工作,因为当我将其更改为连接到 Azure 服务总线队列时,它确实可以工作。 不知道如何解决这个问题,如果我能得到任何线索,我将非常感激,谢谢!
您是否验证了 ANONYMOUS 机制对于您的代理配置是否正确?如果您使用用户名/密码,那么您可能需要使用 PLAIN。这是来自此处的安慰文档:https://docs.solace.com/API/AMQP/Client-Support.htm
AMQP 使用简单身份验证和安全层 (SASL) 进行身份验证。事件代理支持 ANONYMOUS、PLAIN 和 EXTERNAL SASL 机制。
- Solace 基本身份验证类型为 none 时必须使用 ANONYMOUS 机制。
- PLAIN 机制必须用于内部、LDAP 或 Radius 的 Solace 基本身份验证类型。在这种情况下,sasl.init 帧的 authcid 和密码字段用于建立身份。
- 必须使用 EXTERNAL 机制进行 Solace 客户端证书身份验证。在这种情况下,身份是通过正常方式提供的客户端证书的字段建立的。