Transport¶
- class oslo_messaging.Transport(driver)¶
一个消息传输。
这主要是对底层消息传输驱动程序的不透明句柄。
RPC 和通知可能使用不同的消息系统,这些系统使用不同的驱动程序、访问权限、消息传递等。为了确保正确的消息传递功能,应使用相应的方法从用户配置中获取的传输配置(以及可选的传输 URL)构造一个 Transport 对象。
RPC Transport 对象的工厂方法
def get_rpc_transport(conf, url=None, allowed_remote_exmods=None)
如果作为参数提供了传输 URL,则其中的任何传输配置都优先。如果没有提供传输 URL,但用户的配置中提供了传输 URL,则该 URL 将代替 URL 参数。
Notification Transport 对象的工厂方法
def get_notification_transport(conf, url=None, allowed_remote_exmods=None)
如果未提供传输 URL,将使用配置文件中通知部分中的 URL。如果该 URL 也缺失,将使用用户默认部分中指定的相同传输。
Transport 具有一个名为 ‘conf’ 的属性,它是用于构造传输对象的 cfg.ConfigOpts 实例。
- class oslo_messaging.TransportURL(conf, transport=None, virtual_host=None, hosts=None, query=None)¶
一个解析后的传输 URL。
传输 URL 的形式如下
driver://[user:pass@]host:port[,[userN:passN@]hostN:portN]/virtual_host?query
其中
- driver
指定要使用的传输驱动程序。通常,对于 RabbitMQ 代理,这是 rabbit。有关其他可用的传输驱动程序,请参阅文档。
- [user:pass@]host:port
指定代理的网络位置。user 和 pass 是用于与代理进行身份验证的可选用户名和密码。
- user 和 pass 可以包含以下 ASCII 字符
字母 (a-z 和 A-Z)
数字 (0-9)
特殊字符:& = $ - _ . + ! * ( )
为了与某些 SASL 实现兼容,user 可以包含最多一个 @ 字符。
user 和 pass 中的所有其他字符必须通过 ‘%nn’ 进行编码
您可以包含用逗号分隔的多个不同的网络位置。客户端将连接到任何可用的位置,并在连接失败时自动故障转移到另一个位置。
- virtual_host
指定代理内的“虚拟主机”。对虚拟主机的支持取决于所使用的消息总线。
- 查询
允许传递特定于驱动程序的选项,这些选项会覆盖配置文件中的相应值。
- 参数:
conf (oslo.config.cfg.ConfigOpts) – 一个 ConfigOpts 实例
transport (str) – 一个传输名称,例如 ‘rabbit’
virtual_host (str) – 一个虚拟主机路径,例如 ‘/’
hosts (list) – 一个 TransportHost 对象列表
query (dict) – 一个 URL 查询参数字典
- classmethod parse(conf, url=None)¶
解析如
TransportURL中定义的 URL,并返回一个 TransportURL 对象。假设 URL 的形式如下
transport://user:pass@host:port[,userN:passN@hostN:portN]/virtual_host?query
然后解析 URL 并返回一个 TransportURL 对象。
Netloc 的解析顺序如下
它首先按 ‘,’ 分割,以支持多个主机
所有主机应同时指定用户名/密码或不指定。如果缺少指定,则将省略用户名和密码
user:pass@host1:port1,host2:port2 [ {"username": "user", "password": "pass", "host": "host1:port1"}, {"host": "host2:port2"} ]
如果未提供 url,则解析 conf.transport_url 代替。
- 参数:
conf (oslo.config.cfg.ConfigOpts) – 一个 ConfigOpts 实例
url (str) – 要解析的 URL
- 返回值:
一个 TransportURL
- class oslo_messaging.TransportHost(hostname=None, port=None, username=None, password=None)¶
一个解析后的传输 URL 的主机元素。
- oslo_messaging.set_transport_defaults(control_exchange)¶
设置消息传输配置选项的默认值。
- 参数:
control_exchange (str) – 主题作用域下的默认交换机
分叉进程和 oslo.messaging Transport 对象¶
oslo.messaging 无法确保分叉共享相同传输对象的进程对库使用者是安全的,因为它依赖于不同的第三方库,这些库无法确保这一点。在某些情况下,使用某些驱动程序,它可以工作
rabbit:只有在尚未建立任何连接的情况下才有效。