Jos*_*osh 14 c# azureservicebus .net-standard
我的场景:托管在云上的网站,每个实例创建一个服务总线主题的订阅,以便自己监听消息.
我的问题: 如何以编程方式创建订阅?
...
问题:我习惯使用较旧的WindowsAzure库.现在我使用的是不支持旧库的.NET Standard
解决方案:使用Microsoft.Azure.ServiceBus NuGet包
...
问题:它不支持管理功能(如创建订阅)
解决方案:还使用NuGet库Microsoft.Azure.Management.ServiceBus
...
问题:它不支持使用连接字符串或Azure门户提供给您的密钥
解决方案:https: //github.com/Azure-Samples/service-bus-dotnet-management提供了常用的编程模式.
...
问题:WTF是它正在谈论的{tenantId}?
解决方案:很明显,它位于"Azure Active Directory" - >"Properties"下,并且有助于标记为"Directory ID"而不是tenantId,正如人们所期望的那样
...
问题:WTF是{clientId}和{clientSecret}?
解决方案:更容易.从这些信息中可以明显看出,您必须:
...
好的,示例工作的第1步也是如此?AcquireTokenAsync返回一个访问令牌!YAYYYYYYYYYYYYY
result.AccessToken是步骤2中提到的"令牌",似乎.
第2,3步......没问题......继续执行第4步.除了使用sbClient.Subscriptions.CreateOrUpdate代替
{resourceGroupName}似乎很容易 - 从门户网站上的"资源组"复制
...
问题:什么是{namespaceName}?
是服务总线名称吗?喜欢{name} .servicebus.windows.net?或者命名空间是{name.servicebus.windows.net}的全部内容?或者它包括像{sb://name.servicebus.windows.net}这样的方案?
...
问题:无论我在这里尝试什么,我都会在CreateOrUpdate调用中以"Operation返回无效状态代码'NotFound'"结束.
那就是我被困住的地方.我哪里出错了?
在旁注中,snark反映了我的挫败感 - 我觉得好像我需要学习一大堆Azure技术,我真的不想知道任何事情只是为了做一些"应该简单的事情" ".就像我被一个兔子洞弄下来一样.
[编辑#1] - "SubscriptionId"原来是在门户的计费部分下找到的AZURE订阅ID,而不是指服务总线订阅.
[编辑#2] - "namespaceName"不包括.servicebus.windows.net - 只是名称本身
随着这些变化,经过无数个小时的研究,IT工作
Gus*_*nta 27
Microsoft.Azure.ServiceBus.3.1.0允许使用ConnectionString创建ManagementClient.
private async Task CreateTopicSubscriptions()
{
var client = new ManagementClient(ServiceBusConnectionString);
for (int i = 0; i < Subscriptions.Length; i++)
{
if (!await client.SubscriptionExistsAsync(TopicName, Subscriptions[i]))
{
await client.CreateSubscriptionAsync(new SubscriptionDescription(TopicName, Subscriptions[i]));
}
}
}
Run Code Online (Sandbox Code Playgroud)
新 Azure 服务总线客户端的原始计划根本不包括管理平面,而是使用 Azure Active Directory 路由。事实证明,这太成问题了,就像您指出的那样。Microsoft 消息传递团队已经整理了一个示例来演示基本操作。
请注意,有一个悬而未决的 PR可以让它与 .NET Core 2.0 一起使用
展望未来,人们认识到开发人员更喜欢使用连接字符串访问 Service Bass,就像他们过去常常通过 Azure Active Directory 选项一样。提出管理操作问题以跟踪请求。当前计划是为 .NET Standard 客户端提供一个轻量级的管理库。
目前,选项是利用旧客户端创建实体或使用 Microsoft.Azure.Management.ServiceBus(或 Fluent),直到管理包可用。
更新
管理操作作为 3.1.0 版客户端的一部分发布。
| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |