我目前正在使用amqp.net lite从我的树莓派向 azure eventthub 发送消息。
我的连接字符串如下所示:amqps://SendMessage:[url 编码键]@[sb 命名空间]
这很好用,但现在我想改用 SAS 令牌。在这种情况下,有效的连接字符串会是什么样子?到目前为止,我尝试的任何方法都没有为我工作。
PS 我没有使用微软的官方 NuGet 包,因为它不适用于单声道
我目前正在使用amqp.net lite从我的树莓派向 azure eventthub 发送消息。
我的连接字符串如下所示:amqps://SendMessage:[url 编码键]@[sb 命名空间]
这很好用,但现在我想改用 SAS 令牌。在这种情况下,有效的连接字符串会是什么样子?到目前为止,我尝试的任何方法都没有为我工作。
PS 我没有使用微软的官方 NuGet 包,因为它不适用于单声道
amqps://[SharedAccessKeyName]:[url 编码的 SharedAccessKey]@[sb 命名空间]
SharedAccessKeyName 和 SharedAccessKey 是从门户获取的策略名称和令牌。
string eventhubHostFormat = "amqps://{0}:{1}@{2}.servicebus.windows.net";
var address = new Address(string.Format(eventhubHostFormat, "your SAS policy name", Uri.EscapeUriString("your SAS key"), "your servicebus name"));
var eventHubConnection = new Connection(address);
var eventHubSession = new Session(eventHubConnection);
var eventHubSender = new SenderLink(eventHubSession, "0" /* partition ID */, "your eventhub name");
好的,这里描述的机制确实有效。阅读标题为“使用共享访问签名(在 AMQP 级别)”的最后一节。它描述了如何将 SAS 令牌与非常低级的Amqp.NET Lite一起使用。使用Azure SB Lite更简单。它仍然基于 Amqp.NET Lite,但提供了更多抽象。