第 5 章 配置选项

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

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

5.1. JMS 选项

这些选项控制 JMS 对象的产生,如 ConnectionSessionMessageConsumerMessageProducer

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
如果启用,调用 receive 并带有超时参数会只检查消费者的本地信息缓冲。否则,如果超时过期,将检查远程对等点以确保真正没有消息。它默认是禁用的。
jms.receiveNoWaitLocalOnly
如果启用,调用 receiveNoWait 只会检查消费者的本地信息缓冲。否则,将检查远程对等点以确保真正没有可用的消息。它默认是禁用的。
jms.queuePrefix
一个可选的前缀值,添加到从 Session 创建的任何 Queue 的名称中。
jms.topicPrefix
一个可选的前缀值,添加到从 Session 创建的任何 Topic 的名称中。
jms.closeTimeout
客户端在返回之前等待正常资源的时间以毫秒为单位。默认值为 60000(60 秒)。
jms.connectTimeout
客户端在返回错误前等待连接建立的时间(毫秒)。默认值为 15000(15 秒)。
jms.sendTimeout
客户端在返回错误前等待 异步消息发送 的时间(毫秒为单位)。默认情况下,客户端会无限期等待发送完成。
jms.requestTimeout
客户端等待完成 各种同步交互 的时间(以毫秒为单位),如打开制作者或消费者(除外发送),然后返回错误。默认情况下,客户端会无限期等待请求完成。
jms.clientIDPrefix
ConnectionFactory 创建新 Connection 时,用于生成客户端 ID 值的可选前缀值。默认值为 ID:
jms.connectionIDPrefix
ConnectionFactory 创建新 Connection 时,用于生成连接 ID 值的可选前缀值。此连接 ID 在记录 Connection 对象中的一些信息时使用,因此可配置的前缀可简化日志的面包。默认值为 ID:
jms.populateJMSXUserID
如果启用,使用连接中经过身份验证的用户名填充每个发送的消息的 JMSXUserID 属性。它默认是禁用的。
jms.awaitClientID
如果启用,在 URI 中未配置客户端 ID 的连接会等待以编程方式设置客户端 ID,或确认在发送 AMQP 连接"open" 之前无法设置任何客户端 ID。它会被默认启用。
jms.useDaemonThread
如果启用,连接将守护进程线程用于其 executor,而不是非后台程序线程。它默认是禁用的。
jms.tracing
追踪提供程序的名称。支持的值有 opentracingnoop。默认值为 noop

预定义策略选项

prefetch 策略决定每个 MessageConsumer 从远程 peer 获取的信息数,并保存在本地"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 表示不接受任何消息重新传送。值 5 允许将消息重新传送五次,以此类推。默认值为 -1,即没有限制。
jms.redeliveryPolicy.outcome
在消息超过配置的 maxRedeliveries 值后,控制应用到消息的结果。支持的值有: ACCEPTEDREJECTEDRELEASED MODIFIED_FAILEDMODIFIED_FAILED_UNDELIVERABLE。默认值为 MODIFIED_FAILED_UNDELIVERABLE

消息 ID 策略选项

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

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

Presettle 策略选项

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

jms.presettlePolicy.presettleAll
如果启用,则所有创建的生产者和非翻译消费者都在预先设置的模式下运作。它默认是禁用的。
jms.presettlePolicy.presettleProducers
如果启用,则所有制作者都以预设模式运作。它默认是禁用的。
jms.presettlePolicy.presettleTopicProducers
如果启用,发送到 TopicTemporaryTopic 目标的所有制作者都以预设置模式运行。它默认是禁用的。
jms.presettlePolicy.presettleQueueProducers
如果启用,发送到 QueueTemporaryQueue 目标的所有制作者都以预设置模式运行。它默认是禁用的。
jms.presettlePolicy.presettleTransactedProducers
如果启用,在转换的 Session 中创建的任何制作者都以预设置模式运行。它默认是禁用的。
jms.presettlePolicy.presettleConsumers
如果启用,则所有消费者都以预设模式运作。它默认是禁用的。
jms.presettlePolicy.presettleTopicConsumers
如果启用,从 TopicTemporaryTopic 目标接收的消费者都以预设置模式运行。它默认是禁用的。
jms.presettlePolicy.presettleQueueConsumers
如果启用,从 QueueTemporaryQueue 目标接收的消费者都以预设置模式运行。它默认是禁用的。

序列化策略选项

反序列化策略提供了控制 Java 类型被信任从对象流中取消序列化的方法,同时从传入的 ObjectMessage 检索由序列化 Java Object 内容组成的 正文。默认情况下,在尝试对正文进行反序列的过程中,所有类型都是受信任的。默认反序列策略提供 URI 选项,允许指定 Java 类或软件包名称的白名单和黑名单。

jms.deserializationPolicy.whiteList
以逗号分隔的类和软件包名称列表,在对 ObjectMessage 的内容进行反序列时允许,除非被 blackList 覆盖。这个列表中的名称不是模式值。必须配置具体的类或软件包名称,如 java.util.Mapjava.util 所示。软件包匹配包括子软件包.默认值为允许所有.
jms.deserializationPolicy.blackList
以逗号分隔的类和软件包名称列表,在对 ObjectMessage 的内容进行降序时应拒绝这些列表。这个列表中的名称不是模式值。必须配置具体的类或软件包名称,如 java.util.Mapjava.util 所示。软件包匹配包括子软件包.默认设置是防止 none。