配置选项¶
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) 元组列表