gpt4 book ai didi

c# - Azure 服务总线发布/订阅到多个 azure Web 应用实例

转载 作者:太空狗 更新时间:2023-10-29 22:58:06 25 4
gpt4 key购买 nike

我正在尝试使用 azure 服务总线实现发布/订阅。我从本教程开始,到目前为止它有效: https://azure.microsoft.com/en-gb/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/

但在我的专用案例中,我不太确定应该如何准确地做到这一点:

我有一个在 Azure Web 应用程序上运行的 Web API,该应用程序已扩展到三个实例。我有一个控制台应用程序客户端,它会触发一些消息到专用主题。

我想要实现的是,Web API 的所有三个实例都获取发送到消息总线的消息。所以这是一个火忘记 Action :

  • 客户端向主题发送消息
  • 当前订阅此主题的每个订阅者都应该收到该消息

我对订阅者不活动/离线时发送的旧消息不感兴趣。我只是在这些实例上同步内存缓存,因此当我需要知道必须使哪些键无效时,这实际上是一个短暂的信息。但重要的是每个订阅者都能获取信息以避免数据过时。

我不太确定是否必须在 Web API 的启动代码中动态创建订阅,以便每个实例都有自己的订阅,或者我是否可以将所有 Web 应用程序实例订阅到同一订阅?我不想动态创建订阅,因为我不知道何时再次删除它们(例如缩小到 2 个实例而不是 3 个)。但我无法找到任何文档如何执行此操作,以及多个客户端订阅同一订阅是否可以,或者我是否需要为每个客户端创建订阅。

最佳答案

I am not exactly sure if i have to create a subscription dynamically in the startup code of the web api so that every instance has its own subscription or if i can subscribe all web app instances to the same subscription?

服务总线订阅者采用 Competing Consumer默认模式。您必须为每个 Web API 实例创建唯一的订阅,以便每个实例接收消息的副本。当 Web API 实例启动时,执行此操作最简单。

I would like not to dynamically create subscriptions since i don't know when to remove them again (e.g. scaled down to 2 instances instead of three).

您可以将订阅配置为在闲置一段时间后自动删除。在这种情况下,“空闲”意味着 Web API 实例已停止运行并且不再尝试接收订阅上的消息。创建订阅时设置AutoDeleteOnIdle时间跨度很短,目前至少为 5 分钟。现在,您可以在 Web API 实例启动时创建新的订阅,并知道它会在 Web API 实例停止后不久自动删除。

I am not interested in older messages that were sent when the subscriber was inactive/offline.

创建topic时,将 DefaultMessageTimeToLive 设置为短暂的持续时间,例如5秒。这将确保新订阅者看不到旧消息。

关于c# - Azure 服务总线发布/订阅到多个 azure Web 应用实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32666920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com