【问题标题】:Azure Service Bus - How to Add Topic Subscriber ProgrammaticallyAzure 服务总线 - 如何以编程方式添加主题订阅者
【发布时间】:2022-01-07 14:54:57
【问题描述】:

我正在尝试使用动态订阅者实现一个基本的发布/订阅系统。我需要在我的 .NET API 中动态注册主题订阅者,但似乎我只能从 Azure 门户手动执行此操作。当我的程序启动时,我希望能够以subscribername-{timestamp} 的格式注册主题的订阅者,因为我希望能够部署尽可能多的暂存/开发版本,而不必每次都手动创建这些订阅者.

我觉得这是一个我只是盲目地缺少的基本功能。我可以在使用队列时执行此操作,但如果我尝试对某个主题执行相同操作,则会收到找不到该订阅者路径的连续错误。我在互联网上进行了无止境的搜索,虽然我找到了一些解决方案,但它们非常陈旧,并且通常与 .NET 5 不兼容,或者该软件包已被弃用。我觉得我在违背常规,并且在我想出的东西中遗漏了一些东西,所以我想获得一些关于什么是正确做法的意见。

我目前使用Azure.Messaging.ServiceBus 进行发布和订阅。下面是一些代码-

var processor = ServiceBusClient.CreateProcessor(TopicName, $"DynamicSubscriber-{DateTime.Now}");
    
try
{
    processor.ProcessErrorAsync += ErrorHandler;
    processor.ProcessMessageAsync += MessageHandler;
    await processor.StartProcessingAsync();
}
catch (Exception e)
{
    await processor.DisposeAsync();
    await ServiceBusClient.DisposeAsync();
}
finally
{
    Console.WriteLine("Press a key to exit.");
    Console.ReadLine();
}

【问题讨论】:

标签: c# azure azureservicebus .net-5


【解决方案1】:

谢谢@PeterBons!是的,在更新/创建/获取/删除服务总线实体时,ServiceBusAdministrationClient 是要使用的客户端类。

另外,当使用带有 ServiceBusAdministrationClient 的 Queue 方法和这个 SO Thread 时,给出这个 article 的错误细节很少。

ServiceBusTopicSubscription 类用于设置 Azure 服务总线订阅。该类使用ServiceBusClient 设置消息处理程序,ServiceBusAdministrationClient 用于实现过滤器并添加或删除这些规则。 Azure.Messaging.ServiceBus Nuget 包用于连接订阅。

【讨论】:

  • 您好@Brandon,如果回答对您有帮助,请Accept it as an Answer,以便遇到相同问题的其他人可以找到此解决方案并解决他们的问题。
猜你喜欢
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 2023-03-09
  • 2019-02-12
  • 2017-11-19
  • 2018-08-27
  • 2016-02-10
  • 2016-12-29
相关资源
最近更新 更多