用于自动扩展网站的Azure服务总线订阅



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

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

但是对于那些不是我想要的网站也是一样的。两个web站点实例都需要接收所有消息,因此需要它们自己的订阅。

是否有一种方法可以获得网站的"实例"名称并动态地进行订阅(并在网站缩减时再次删除订阅)?

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

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

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

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

相关内容

最新更新