配置选项

oslo.messaging 使用 oslo.config 来定义和管理配置选项,以便部署者可以控制应用程序如何使用底层的消息传递系统。

默认值

executor_thread_pool_size
类型:

整数

默认值:

64

当 executor 是 threading 或 eventlet 时,executor 线程池的大小。

已弃用的变体

Group

名称

DEFAULT

rpc_thread_pool_size

rpc_response_timeout
类型:

整数

默认值:

60

等待调用响应的秒数。

transport_url
类型:

字符串

默认值:

rabbit://

用于连接消息传递后端,包括网络地址和可选的用户凭据,格式为 URL。

driver://[user:pass@]host:port[,[userN:passN@]hostN:portN]/virtual_host?query

示例:rabbit://rabbitmq:password@127.0.0.1:5672//

有关 URL 中字段的完整详细信息,请参阅 oslo_messaging.TransportURL 的文档:https://docs.openstack.org/oslo.messaging/2025.2/reference/transport.html

control_exchange
类型:

字符串

默认值:

openstack

主题的作用域所在的默认交换机。可以通过 transport_url 选项中指定的交换机名称覆盖。

rpc_ping_enabled
类型:

布尔值

默认值:

False

添加一个端点来响应 ping 调用。端点命名为 oslo_rpc_server_ping

oslo_messaging_kafka

kafka_max_fetch_bytes
类型:

整数

默认值:

1048576

Kafka 消费者最大获取字节数

kafka_consumer_timeout
类型:

浮点数

默认值:

1.0

Kafka 消费者的默认超时时间(秒)

consumer_group
类型:

字符串

默认值:

oslo_messaging_consumer

Kafka 消费者的组 ID。同一组中的消费者将协调消息消费

producer_batch_timeout
类型:

浮点数

默认值:

0.0

KafkaProducer 批量处理延迟的上限(秒)

producer_batch_size
类型:

整数

默认值:

16384

生产者异步发送的批处理大小

compression_codec
类型:

字符串

默认值:

none

有效值:

none, gzip, snappy, lz4, zstd

生产者生成的所有数据的压缩编解码器。如果未设置,则不使用压缩。请注意,允许的值取决于 kafka 版本

enable_auto_commit
类型:

布尔值

默认值:

False

启用异步消费者提交

max_poll_records
类型:

整数

默认值:

500

在轮询调用中返回的最大记录数

security_protocol
类型:

字符串

默认值:

PLAINTEXT

有效值:

PLAINTEXT, SASL_PLAINTEXT, SSL, SASL_SSL

用于与代理通信的协议

sasl_mechanism
类型:

字符串

默认值:

PLAIN

安全协议为 SASL 时的机制

ssl_cafile
类型:

字符串

默认值:

''

用于验证服务器证书的 CA 证书 PEM 文件

ssl_client_cert_file
类型:

字符串

默认值:

''

用于身份验证的客户端证书 PEM 文件。

ssl_client_key_file
类型:

字符串

默认值:

''

用于身份验证的客户端密钥 PEM 文件。

ssl_client_key_password
类型:

字符串

默认值:

''

用于身份验证的客户端密钥密码文件。

oslo_messaging_notifications

driver
类型:

多值

默认值:

''

处理发送通知的驱动程序。可能的值是 messaging、messagingv2、routing、log、test、noop

transport_url
类型:

字符串

默认值:

<None>

用于通知的消息驱动程序的 URL。如果未设置,我们将回退到用于 RPC 的相同配置。

topics
类型:

列表

默认值:

['notifications']

用于 OpenStack 通知 AMQP 主题。

retry
类型:

整数

默认值:

-1

由于可恢复错误而未能传递的通知消息重试的最大次数。0 - 不重试,-1 - 无限

oslo_messaging_rabbit

amqp_durable_queues
类型:

布尔值

默认值:

False

在 AMQP 中使用持久队列。如果启用了 rabbit_quorum_queue,则队列将是持久的,并且此值将被忽略。

amqp_auto_delete
类型:

布尔值

默认值:

False

在 AMQP 中自动删除队列。

rpc_conn_pool_size
类型:

整数

默认值:

30

最小值:

1

RPC 连接池的大小。

conn_pool_min_size
类型:

整数

默认值:

2

连接过期策略的池大小限制

conn_pool_ttl
类型:

整数

默认值:

1200

池中空闲连接的生存时间(秒)

ssl
类型:

布尔值

默认值:

False

通过 SSL 连接。

ssl_version
类型:

字符串

默认值:

''

要使用的 SSL 版本(仅在启用 SSL 时有效)。有效值为 TLSv1 和 SSLv23。某些发行版上可能可用 SSLv2、SSLv3、TLSv1_1 和 TLSv1_2。

ssl_key_file
类型:

字符串

默认值:

''

SSL 密钥文件(仅在启用 SSL 时有效)。

ssl_cert_file
类型:

字符串

默认值:

''

SSL 证书文件(仅在启用 SSL 时有效)。

ssl_ca_file
类型:

字符串

默认值:

''

用于验证服务器证书的 SSL 证书颁发机构文件(仅在启用 SSL 时有效)。

ssl_enforce_fips_mode
类型:

布尔值

默认值:

False

全局切换以强制执行 OpenSSL FIPS 模式。此功能需要 Python 支持。这在所有环境中的 Python 3.9 中可用,并且可能已回溯到旧版本的 Python。如果使用的 Python 可执行文件不支持 OpenSSL FIPS 模式,将引发异常。

heartbeat_in_pthread
类型:

布尔值

默认值:

False

(已弃用) 建议不再使用此选项。默认情况下,通过本机 python 线程运行健康检查心跳线程。如果此选项等于 False,则心跳将继承父进程的执行模型。例如,如果父进程通过使用 eventlet/greenlet 猴子补丁了 stdlib,则心跳将通过绿色线程运行。仅当使用 eventlet 作为核心服务框架的服务时,才应将此选项设置为 True。

警告

此选项已弃用,将来可能会被静默忽略。

原因:

该选项与即将删除的 Eventlet 相关。此外,这从未像预期那样与使用 eventlet 作为核心服务框架的服务一起工作。

kombu_reconnect_delay
类型:

浮点数

默认值:

1.0

最小值:

0.0

最大值:

4.5

响应 AMQP 消费者取消通知后重新连接的等待时间(秒)。

kombu_reconnect_splay
类型:

浮点数

默认值:

0.0

最小值:

0.0

响应 AMQP 消费者取消通知后重新连接时随机等待时间。

kombu_compression
类型:

字符串

默认值:

<None>

实验性:可能的值是:gzip、bz2。如果未设置,则不使用压缩。此选项可能在未来版本中不可用。

kombu_missing_consumer_retry_timeout
类型:

整数

默认值:

60

在放弃向其发送回复之前等待缺失客户端的时间。此值不应大于 rpc_response_timeout。

已弃用的变体

Group

名称

oslo_messaging_rabbit

kombu_reconnect_timeout

kombu_failover_strategy
类型:

字符串

默认值:

round-robin

有效值:

round-robin, shuffle

确定在当前连接的 RabbitMQ 节点不可用时如何选择下一个 RabbitMQ 节点。仅当配置中提供多个 RabbitMQ 节点时才生效。

rabbit_login_method
类型:

字符串

默认值:

AMQPLAIN

有效值:

PLAIN, AMQPLAIN, EXTERNAL, RABBIT-CR-DEMO

RabbitMQ 登录方法。

rabbit_retry_interval
类型:

整数

默认值:

1

最小值:

1

与 RabbitMQ 重新连接的频率。

rabbit_retry_backoff
类型:

整数

默认值:

2

最小值:

0

在连接到 RabbitMQ 时重试之间的回退时间。

rabbit_interval_max
类型:

整数

默认值:

30

最小值:

1

RabbitMQ 连接重试的最大间隔。

rabbit_ha_queues
类型:

布尔值

默认值:

False

尝试在 RabbitMQ 中使用 HA 队列(x-ha-policy:all)。如果您更改此选项,则必须擦除 RabbitMQ 数据库。在 RabbitMQ 3.0 中,队列镜像不再由声明队列时的 x-ha-policy 参数控制。如果您只想确保所有队列(不包括具有自动生成名称的队列)在所有节点上镜像,请运行:“rabbitmqctl set_policy HA ‘^(?!amq.).*’ ‘{“ha-mode”: “all”}’ “

rabbit_quorum_queue
类型:

布尔值

默认值:

False

在 RabbitMQ 中使用 quorum 队列(x-queue-type:quorum)。quorum 队列是 RabbitMQ 的一种现代队列类型,它实现了一个基于 Raft 共识算法的持久、复制的 FIFO 队列。它从 RabbitMQ 3.8.0 开始可用。如果设置此选项,它将与 HA 队列(rabbit_ha_queues)即镜像队列冲突,换句话说,应禁用 HA 队列。Quorum 队列默认情况下也是持久的,因此启用此选项时会忽略 amqp_durable_queues 选项。

rabbit_transient_quorum_queue
类型:

布尔值

默认值:

False

在 RabbitMQ 中为瞬态队列使用 quorum 队列。启用此选项将确保这些队列也使用 quorum 类型的 rabbit 队列,这些队列默认情况下是 HA。

rabbit_quorum_delivery_limit
类型:

整数

默认值:

0

每次将消息重新传递给消费者时,都会递增计数器。一旦重新传递计数超过传递限制,该消息将被丢弃或死信(如果配置了 DLX 交换机)。仅当启用 rabbit_quorum_queue 时使用,默认值为 0,表示不设置限制。

rabbit_quorum_max_memory_length
类型:

整数

默认值:

0

默认情况下,所有消息都保存在内存中。如果 quorum 队列增长,可能会给集群带来内存压力。此选项可以限制 quorum 队列中的消息数量。仅当启用 rabbit_quorum_queue 时使用,默认值为 0,表示不设置限制。

rabbit_quorum_max_memory_bytes
类型:

整数

默认值:

0

默认情况下,所有消息都保存在内存中。如果 quorum 队列增长,可能会给集群带来内存压力。此选项可以限制 quorum 队列使用的内存字节数。仅在启用 rabbit_quorum_queue 时使用,默认值为 0,表示不设置限制。

rabbit_transient_queues_ttl
类型:

整数

默认值:

1800

最小值:

0

表示队列 TTL(x-expires)的秒数(正整数)。对于达到 TTL 持续时间的未使用的队列,将自动删除。该参数仅影响回复和扇出队列。将值设置为 0 将禁用 x-expires。如果这样做,请确保您拥有一个 rabbitmq 策略来删除队列,否则您的部署会随着时间的推移创建无限数量的队列。如果将 rabbit_stream_fanout 设置为 True,此选项将控制扇出队列中消息的数据保留策略(x-max-age),而不是队列持续时间本身。因此,一旦达到 TTL,流队列中最旧的数据将被丢弃。将设置为 0 将禁用流的 x-max-age,从而使流无限增长并填满磁盘空间

rabbit_qos_prefetch_count
类型:

整数

默认值:

0

指定要预取的消息数量。设置为零允许无限数量的消息。

heartbeat_timeout_threshold
类型:

整数

默认值:

60

如果心跳的 keep-alive 失败,则 Rabbit broker 被认为已关闭的时间(秒)。(0 禁用心跳)。

heartbeat_rate
类型:

整数

默认值:

3

在 heartbeat_timeout_threshold 期间检查心跳的频率。

direct_mandatory_flag
类型:

布尔值

默认值:

True

(已弃用)启用/禁用直接发送的 RabbitMQ mandatory 标志。直接发送用作回复,因此如果客户端队列不存在,则会引发 MessageUndeliverable 异常。MessageUndeliverable 异常将用于超时循环,以便让发送者有机会恢复。此标志已弃用,并且不再可以禁用此功能

警告

此选项已弃用,将来可能会被静默忽略。

原因:

Mandatory 标志不再可以禁用。

enable_cancel_on_failover
类型:

布尔值

默认值:

False

启用 x-cancel-on-ha-failover 标志,以便 rabbitmq 服务器在队列关闭时取消并通知消费者

use_queue_manager
类型:

布尔值

默认值:

False

我们应该使用一致的队列名称还是随机名称

hostname
类型:

字符串

默认值:

node1.example.com

此选项有一个示例默认值,这意味着其实际默认值可能与上述文档值不同。

队列管理器使用的主机名。默认值为 socket.gethostname() 返回的值。

processname
类型:

字符串

默认值:

nova-api

此选项有一个示例默认值,这意味着其实际默认值可能与上述文档值不同。

队列管理器使用的进程名称

rabbit_stream_fanout
类型:

布尔值

默认值:

False

在 RabbitMQ 中使用流队列(x-queue-type: stream)。流是 RabbitMQ 3.9.0 及更高版本中一种新的持久化和复制的数据结构(“队列类型”),它模拟了一个仅追加日志,具有非破坏性消费者语义。如果设置此选项,将用单个流队列替换所有扇出队列。

API

oslo_messaging.opts.list_opts()

返回库中可用的 oslo.config 选项列表。

返回的列表包含库在运行时可能注册的所有 oslo.config 选项。

列表中的每个元素都是一个元组。第一个元素是将在其中注册第二个元素中列表的组的名称。组名称为 None 对应于配置文件中的 [DEFAULT] 组。

此函数也可以通过 ‘oslo.config.opts’ 命名空间下的 ‘oslo_messaging’ 入口点发现。

其目的是允许 Oslo 示例配置文件生成器等工具发现此库向用户公开的选项。

返回值:

一个 (group_name, opts) 元组列表