自动缩放网站的 Azure 服务总线订阅

标签 azure azureservicebus

我正在以发布/订阅模式使用 Azure 服务总线主题。我有一个主题和两个订阅。一种用于网站,一种用于网络作业。当仅运行一个网站实例时,这可以正常工作。

当 Azure 扩展到两个实例时,两个 webjob 实例仍然使用相同的订阅,因此任何一条消息仅由其中一个实例处理,这正是我想要的。

但是网站也是如此,这不是我想要的。两个网站实例都需要接收所有消息,因此需要自己的订阅。

有没有办法获取网站的“实例”名称并动态进行订阅(并在网站缩减时再次删除订阅)?

我可以创建一个名为 %HOSTNAME%-web 或类似名称的订阅。但是当不再需要时我该如何删除它们呢?

最佳答案

如果您希望所有实例都收到消息的副本,那么正如您所说,您将需要重构,以便每个实例创建自己的订阅。

要实现“ volatile ”队列,请查看 QueueDescription 参数“AutoDeleteOnIdle”。 http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.messaging.queuedescription.autodeleteonidle.aspx这应该可以让您接近您要查找的内容,只需小心将 TimeSpan 设置为确保您不会错过消息的持续时间即可。

或者,如果您只预见扩展到几个实例,您可以适本地设置消息的生存时间,并将队列保留在适当的位置,以便下次“扩展”时重用(尽管使用主机这个名字可能不是一个好主意)。根据消息量,与开发替代方法所需的时间成本相比,成本可能很小。

关于自动缩放网站的 Azure 服务总线订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414211/

相关文章:

面向微服务类型消费者的 Azure 服务总线主题和订阅设计

c# - 开发团队中具有服务总线触发器的 Azure Functions V2

azure - 使用 SendBatchAsync 方法将 1000 条代理消息发送到服务总线

azure - AzureRM 中的 "az functionapp"相当于什么?

azure - 我应该如何创建 "should store in Redis cache"抽象?

java - Azure 服务总线 - Java 应用程序的集成测试方法

azure - v2 Azure Function with Service Bus 触发器未触发

.net - 调试Azure部署(无法浏览)

azure - 我可以授予某人对 Azure 帐户的有限访问权限吗?

google-app-engine - Google App Engine cron 作业调度设置和定价