更多保留的队列属性

https://blueprints.launchpad.net/zaqar/+spec/more-reserved-queue-attributes

目前 Zaqar 支持用户在创建队列时设置元数据/属性。然而,这些元数据/属性本身并没有被 Zaqar 大量使用。现在我们只支持 ‘_flavor’,但如果我们可以支持更多属性,使队列更灵活会更好。

问题描述

现在 Zaqar 支持 max_messages_post_size、default_message_ttl、default_claim_ttl 和 default_claim_grace。它们都定义在 Zaqar 的配置文件中。这意味着这是一个全局设置,所有队列都必须共享相同的配置。从最终用户角度来看,这不够灵活。因此,如果我们可以让最终用户设置它们,并在未定义时使用配置文件中的默认值,那就更好了。

提议的变更

这些更改并不复杂,可能会影响两个操作:发布消息和为队列创建声明。

  1. 发布消息:在 stable/liberty/zaqar/transport/wsgi/v2_0/messages.py#L182 行,我们需要获取队列的元数据,以便获取用户在创建队列时定义的队列的 max_messages_post_size 和 ttl。如果这些不存在,则使用配置文件中定义的全局配置。

  2. 创建声明:类似于上述情况,我们需要在 stable/liberty/zaqar/transport/wsgi/v2_0/claims.py#L81 行获取队列的元数据,然后使用它进行检查。

缺点

这可能会对消息发布和声明创建产生微小的性能影响。例如,在仅仅检查队列是否存在时,Zaqar 需要获取队列的元数据以获取这些属性。但实际上,我们可以使用 ‘get_metadata’ 替换 ‘exists’ 来检查队列是否存在,并且它们都在调用相同的 collection.find_one() 方法,因此从技术上讲,没有性能影响。

备选方案

保持当前方式,让所有队列共享相同的配置。

实现

负责人

主要负责人

flwang (flwang@catalyst.net.nz)

工作项

  1. 支持 max_messages_size 和 ttl 作为队列属性

  2. 支持 claim_ttl 和 claim_grace 作为队列属性

依赖项

N/A