And*_*son 5 c# azure azureservicebus
Microsoft已更新其.NET ServiceBus客户端库,其文档目前分为旧的WindowsAzure.ServiceBus包和新的Microsoft.Azure.ServiceBus包.我喜欢新的包,因为它更清洁,依赖性更低.在旧包中,我们有如下方法:
if (!namespaceManager.TopicExists(topicName))
{
var topic = new TopicDescription(topicName);
namespaceManager.CreateTopic(topic);
}
Run Code Online (Sandbox Code Playgroud)
以编程方式创建主题的文档仍然使用旧包,其代码如上所述.这个NamespaceManager类在新包中不可用,那么我怎样才能达到相应的目的呢?
在.NET Core中,您可以ManagementClient这样做,与命名空间管理器相比,它更容易。
try
{
await managementClient.GetTopicAsync(topicName);
}
catch (MessagingEntityNotFoundException)
{
await managementClient.CreateTopicAsync(new TopicDescription(topicName) { EnablePartitioning = true });
}
try
{
await managementClient.GetQueueAsync(queueName);
}
catch (MessagingEntityNotFoundException)
{
await managementClient.CreateQueueAsync(new QueueDescription(queueName) { EnablePartitioning = true });
}
Run Code Online (Sandbox Code Playgroud)
参见azure-service-bus-dotnet / issues / 65
接受的答案是在 2017 年,因此我们于今天 2022 年 1 月 13 日对如何在 Azure 服务总线上创建主题进行了更新。
Microsoft 建议在其最新包 Azure.Messaging.ServiceBus 中使用 ServiceBusAdministrationClient。
安装 NuGet 包:Azure.Messaging.ServiceBus
以下是创建新主题的方法:
const string Topic = "<YourTopic>";
// Create the topic if it doesn't exist
var adminClient = new ServiceBusAdministrationClient(ConnectionString);
if (!await adminClient.TopicExistsAsync(Topic))
await adminClient.CreateTopicAsync(Topic);
Run Code Online (Sandbox Code Playgroud)
与创建订阅类似。
在Github Repo azure-service-bus-dotnet上,他们解释了如何管理Service Bus实体:
管理Azure资源的标准方法是使用Azure资源管理器.要使用以前存在于.NET Framework Service Bus客户端库中的功能,您需要使用该
Microsoft.Azure.Management.ServiceBus库.这将启用动态创建/读取/更新/删除资源的用例.
有关如何使用此库的示例:
你需要安装这些包:
如果你想创建一个主题,有趣的部分.请注意,您无需检查主题是否存在.Azure资源管理器仅在资源已存在时更新资源.
// On you've got the ServiceBusManagementClient
ServiceBusManagementClient sbClient = ...
sbClient.Topics.CreateOrUpdateAsync("resource group name", "namespace name", "topic name",
new Microsoft.Azure.Management.ServiceBus.Models.SBTopic());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3799 次 |
| 最近记录: |