使用声明 ID 删除消息¶
https://blueprints.launchpad.net/zaqar/+spec/delete-message-with-claim-id
使用声明 ID 删除消息意味着当用户删除消息时,消息必须已被声明。如果要删除消息,您必须同时使用消息 ID 和声明 ID。这可以提高消息的安全性。
问题描述¶
目前,任何知道消息 ID 的客户端,如果消息未被声明,都可以删除该消息。这可能会导致一些意想不到的问题。更好的删除消息的方式是确保消息由声明该消息的客户端删除。Amazon SQS 使用收据处理程序来删除消息[1]。Zaqar 可以使用声明 ID 和消息 ID 来删除消息。
提议的变更¶
添加一个新的配置项,名为 message_delete_with_claim_id,默认值为 False,这意味着它向后兼容。您可以修改此配置项来决定是否开启此功能。如果将其更改为 True,则在删除消息时必须强制携带声明 ID。如果声明 ID 无效,则无法删除消息。您必须重新声明消息,然后删除它。
..note
No matter "message_delete_with_claim_id" is True of False, admin can
always delete a message without claim_id.
API 影响¶
删除单个消息 DELETE: /v2/queues/test_queue/messages/{message_id}?claim_id={claim_id}
响应代码: 204
删除消息 DELETE: /v2/queues/test_queue/messages?ids={messages_ids}&claim_ids={claim_ids}
响应代码: 204
缺点¶
无
备选方案¶
无
实现¶
负责人¶
- 主要负责人
cdyangzhenyu <cdyangzhenyu@gmail.com>
- 二级分配人
gecong<ge.cong@zte.com.cn> wanghao<sxmatch1986@gmail.com>
里程碑¶
- 完成目标里程碑
stein RC3
工作项¶
修改消息删除代码。
添加此功能的发布说明。
更新 API 参考。
添加此功能的开发者文档。
相应地更改单元测试、功能测试和 tempest 测试。
依赖项¶
无