Lau*_*nSt 5 c# azure azureservicebus
我想用天蓝色的服务总线来实现一个pub/sub.我从这个教程开始,它到目前为止工作:https: //azure.microsoft.com/en-gb/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/
但在我的专案中,我并不完全确定我应该如何做到:
我在azure web app上运行了一个web api,它被缩放到三个实例.我有一个控制台应用程序客户端,可以触发一些专用主题的消息.
我想要实现的是,web api的所有三个实例都会获得发送到消息总线的消息. 所以这是一个火灾忘记行动:
我对订阅者处于非活动状态/脱机状态时发送的旧消息不感兴趣.我只是在这些实例上同步内存缓存,所以当我需要知道哪些密钥无效时,它实际上是一个简短的生活信息.但重要的是每个订户都要获取信息以避免陈旧数据.
我不确定我是否必须在web api的启动代码中动态创建订阅,以便每个实例都有自己的订阅,或者我是否可以将所有Web应用程序实例订阅到同一订阅?我不想动态创建订阅,因为我不知道何时再次删除它们(例如缩小到2个实例而不是3个实例).但我无法找到任何文档如何做到这一点,如果它是多个客户订阅相同的订阅或如果我需要为每个客户端创建订阅.
我不确定我是否必须在web api的启动代码中动态创建订阅,以便每个实例都有自己的订阅,或者我是否可以将所有Web应用程序实例订阅到同一订阅?
Service Bus用户默认采用Competing Consumer模式.您必须为每个Web API实例创建唯一订阅,以便每个实例都接收消息的副本.在Web API实例启动时,最简单的方法是这样做.
我不想动态创建订阅,因为我不知道何时再次删除它们(例如缩小到2个实例而不是3个实例).
您可以将订阅配置为在空闲一段时间后自动删除.在这种情况下,"空闲"意味着Web API实例已停止运行,并且不再尝试接收订阅上的消息.创建订阅时,将AutoDeleteOnIdle时间跨度设置为短暂的持续时间,目前至少为5分钟.现在,您可以在Web API实例启动时创建新订阅,并知道它将在Web API实例停止后立即自动删除.
我对订阅者处于非活动状态/脱机状态时发送的旧消息不感兴趣.
创建主题时,将DefaultMessageTimeToLive设置为短暂的持续时间,例如5秒.这将确保新订阅者不会看到旧邮件.