第 5 章 配置选项


本章列出了 AMQ JMS 的可用配置选项。

JMS 配置选项被设置为连接 URI 上的查询参数。如需更多信息,请参阅 第 4.3 节 “连接 URI”

5.1. JMS 选项

这些选项控制 JMS 对象的行为,如 Connection,Session,MessageConsumer, 和 MessageProducer

jms.username
客户端用来验证连接的用户名。
jms.password
客户端用来验证连接的密码。
jms.clientID
客户端应用到连接的客户端 ID。
jms.forceAsyncSend
如果启用,则来自 MessageProducer 的所有消息都会异步发送。否则,只有某些类型(如非持久性消息或事务内的消息)异步发送。它默认是禁用的。
jms.forceSyncSend
如果启用,则来自 MessageProducer 的所有消息都会同步发送。它默认是禁用的。
jms.forceAsyncAcks
如果启用,则所有消息确认都会异步发送。它默认是禁用的。
jms.localMessageExpiry
如果启用,则由 MessageConsumer 接收的任何过期信息都会被过滤掉且不发送。它会被默认启用。
jms.localMessagePriority
如果启用,则预先获取的消息会根据消息优先级值在本地重新排序。它默认是禁用的。
jms.validatePropertyNames
如果启用,则消息属性名称必须是有效的 Java 标识符。它会被默认启用。
jms.receiveLocalOnly
如果启用,则使用 timeout 参数 接收的 调用只检查消费者的本地消息缓冲区。否则,如果超时过期,则会检查远程 peer 以确保没有信息。它默认是禁用的。
jms.receiveNoWaitLocalOnly
如果启用,则调用 receiveNoWait 仅检查消费者的本地消息缓冲区。否则,将检查远程 peer 以确保实际没有可用的消息。它默认是禁用的。
jms.queuePrefix
一个可选的前缀值添加到从 Session 创建的任何 Queue 的名称中。
jms.topicPrefix
一个可选的前缀值添加到从 Session 创建的任何 主题的名称中。
jms.closeTimeout
客户端在返回前等待正常资源冲突的时间(以毫秒为单位)。默认值为 60000 (60 秒)。
jms.connectTimeout
客户端在返回错误前等待连接建立的时间(以毫秒为单位)。默认值为 15000 (15 秒)。
jms.sendTimeout
客户端在返回错误前等待完成 同步消息发送的时间 (以毫秒为单位)。默认情况下,客户端会无限期等待发送完成。
jms.requestTimeout
客户端在返回错误前等待完成 各种同步交互 的时间(以毫秒为单位),如打开生成者或消费者(不包括发送)。默认情况下,客户端会无限期等待请求完成。
jms.clientIDPrefix
可选前缀值,用于在由 ConnectionFactory 创建新 连接时 生成客户端 ID 值。默认值为 ID:
jms.connectionIDPrefix
可选前缀值,用于在由 ConnectionFactory 创建新 连接时生成连接 ID 值。在从 Connection 对象中记录一些信息时使用此连接 ID,因此可配置的前缀可以更轻松地对日志进行导航。默认值为 ID:
jms.populateJMSXUserID
如果启用,请使用来自连接的经过身份验证的用户名称,为每个发送的消息填充 JMSXUserID 属性。它默认是禁用的。
jms.awaitClientID
如果启用,则 URI 中没有配置的客户端 ID 的连接会以编程方式设置客户端 ID,或者在发送 AMQP 连接 "open" 前确认是否设置 none。它会被默认启用。
jms.useDaemonThread
如果启用,连接将守护进程线程用于其 executor,而不是非守护进程线程。它默认是禁用的。
jms.tracing
追踪提供程序的名称。支持的值有 opentracingnoop。默认值为 noop

预抓取策略选项

prefetch 策略决定每个 MessageConsumer 从远程对等点获取的消息数量,并保存在本地"prefetch"缓冲区中。

jms.prefetchPolicy.queuePrefetch
默认值为 1000。
jms.prefetchPolicy.topicPrefetch
默认值为 1000。
jms.prefetchPolicy.queueBrowserPrefetch
默认值为 1000。
jms.prefetchPolicy.durableTopicPrefetch
默认值为 1000。
jms.prefetchPolicy.all
这可用于一次性设置所有 prefetch 值。

prefetch 的值可能会影响到队列或共享订阅上的多个消费者的信息分布。较高的值可导致一次向每个消费者发送更大的批处理。要实现更多循环分发,请使用较低的值。

重新发送策略选项

重新发送策略控制如何在客户端上处理重新设计的消息。

jms.redeliveryPolicy.maxRedeliveries
根据已重新设计的次数控制传入的消息何时被拒绝。值 0 表示不接受任何消息 redeliveries。值 5 允许将消息恢复为五次,以此类推。默认值为 -1,代表没有限制。
jms.redeliveryPolicy.outcome
控制在超过配置的 maxRedeliveries 值后,应用到消息的结果。支持的值有: ACCEPTED,REJECTED,RELEASED,MODIFIED_FAILEDMODIFIED_FAILED_UNDELIVERABLE.默认值为 MODIFIED_FAILED_UNDELIVERABLE

消息 ID 策略选项

消息 ID 策略控制分配给从客户端发送的消息 ID 的数据类型。

jms.messageIDPolicy.messageIDType
默认情况下,生成的 String 值用于传出消息上的消息 ID。其他可用的类型包括 UUIDUUID_STRINGPREFIXED_UUID_STRING

Presettle 策略选项

Presettle 策略控制生产者或消费者实例何时配置为使用 AMQP 预先设置的消息传递语义。

jms.presettlePolicy.presettleAll
如果启用,则创建的生成者和非转换的用户都以预先设置的模式操作。它默认是禁用的。
jms.presettlePolicy.presettleProducers
如果启用,则所有制作者都以预先设置的模式运行。它默认是禁用的。
jms.presettlePolicy.presettleTopicProducers
如果启用,则发送到主题或 Temporary Topic 目的地的任何生成者在 presettled 模式中运行。它默认是禁用的。
jms.presettlePolicy.presettleQueueProducers
如果启用,则发送到 QueueTemporaryQueue 目的地的任何制作者都在预先设置的模式下运行。它默认是禁用的。
jms.presettlePolicy.presettleTransactedProducers
如果启用,在 transacted Session 中创建的任何制作者都以预先设置的模式运行。它默认是禁用的。
jms.presettlePolicy.presettleConsumers
如果启用,则所有消费者都以预先设置的模式运行。它默认是禁用的。
jms.presettlePolicy.presettleTopicConsumers
如果启用,则从主题或 Temporary Topic 目的地接收的消费者以 presettled 模式运行。它默认是禁用的。
jms.presettlePolicy.presettleQueueConsumers
如果启用,则从 QueueTemporaryQueue 目的地接收的任何消费者都在预先设置的模式下运行。它默认是禁用的。

解序列化策略选项

解序列化策略提供了一种方式,控制哪些 Java 类型可信任从对象流中反序列化,同时从由序列化 Java 对象内容组成的传入 Object Message 检索正文。默认情况下,所有类型都会在尝试反序列化正文期间被信任。默认 deserialization 策略提供 URI 选项,允许指定白名单和 Java 类或软件包名称黑名单。

jms.deserializationPolicy.whiteList
以逗号分隔的类和软件包名称列表,在停用 ObjectMessage 的内容时应允许这些名称,除非被 blackList 覆盖。此列表中的名称不是模式值。必须配置准确的类或软件包名称,如 java.util.Mapjava.util 中所示。软件包匹配包括子软件包。默认为允许所有。
jms.deserializationPolicy.blackList
以逗号分隔的类和软件包名称列表,在停用 ObjectMessage 的内容时应被拒绝。此列表中的名称不是模式值。必须配置准确的类或软件包名称,如 java.util.Mapjava.util 中所示。软件包匹配包括子软件包。默认为防止 none。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部