更多保留的队列属性¶
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 的配置文件中。这意味着这是一个全局设置,所有队列都必须共享相同的配置。从最终用户角度来看,这不够灵活。因此,如果我们可以让最终用户设置它们,并在未定义时使用配置文件中的默认值,那就更好了。
提议的变更¶
这些更改并不复杂,可能会影响两个操作:发布消息和为队列创建声明。
发布消息:在 stable/liberty/zaqar/transport/wsgi/v2_0/messages.py#L182 行,我们需要获取队列的元数据,以便获取用户在创建队列时定义的队列的 max_messages_post_size 和 ttl。如果这些不存在,则使用配置文件中定义的全局配置。
创建声明:类似于上述情况,我们需要在 stable/liberty/zaqar/transport/wsgi/v2_0/claims.py#L81 行获取队列的元数据,然后使用它进行检查。
缺点¶
这可能会对消息发布和声明创建产生微小的性能影响。例如,在仅仅检查队列是否存在时,Zaqar 需要获取队列的元数据以获取这些属性。但实际上,我们可以使用 ‘get_metadata’ 替换 ‘exists’ 来检查队列是否存在,并且它们都在调用相同的 collection.find_one() 方法,因此从技术上讲,没有性能影响。
备选方案¶
保持当前方式,让所有队列共享相同的配置。
实现¶
负责人¶
- 主要负责人
flwang (flwang@catalyst.net.nz)
工作项¶
支持 max_messages_size 和 ttl 作为队列属性
支持 claim_ttl 和 claim_grace 作为队列属性
依赖项¶
N/A