oslo.messaging: 通知监听器池

https://blueprints.launchpad.net/oslo.messaging/+spec/notification-listener-pools

想法是你可以拥有多个组/池的监听器来消费通知,并且每个组/池只接收每个通知的一份副本。

问题描述

目前,如果两个应用程序使用 oslo.messaging 通知监听器并希望订阅相同的主题,它们会互相抢夺消息。

当前的解决方法是配置通知者部分在不同的主题上发布消息两次。这让很多人感到困惑,而且没有文档说明。

提议的变更

因此,此 BP 的一部分有点硬编码在 oslo.messaging 中,并产生不良副作用。该提案将修复这个问题。

我们需要为 messaging.get_notification_listener() API 添加一个 pool 参数来支持这一点。

在所有 AMQP 驱动程序中,这是通过使用池名称作为从主题消费的队列名称来实现的。为了保持向后兼容性,默认情况下,主题名称将继续用作池/队列名称。

备选方案

记录了该解决方法。

Impact on Existing APIs

oslo.messaging.get_notification_listener 将获得一个新的参数 ‘pool’ 来配置池名称。

安全影响

无。

性能影响

无。

Configuration Impact

无。

开发人员影响

无。

Testing Impact

无。

实现

负责人

主要负责人

sileht

其他贡献者

里程碑

K-1

工作项

已完成的工作: https://review.openstack.org/125112

孵化

无。

采用

无。

无。

预计 API 稳定

无。

文档影响

新的 pool 参数将被记录。

依赖项

无。

参考资料

代码正在审查中: https://review.openstack.org/#/c/125112/

注意

本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode