第 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
-
如果启用,调用
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
-
追踪提供程序的名称。支持的值有
opentracing
和noop
。默认值为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 值后,控制应用到消息的结果。支持的值有:
ACCEPTED
、REJECTED
、RELEASED
MODIFIED_FAILED
和MODIFIED_FAILED_UNDELIVERABLE
。默认值为MODIFIED_FAILED_UNDELIVERABLE
。
消息 ID 策略选项
消息 ID 策略控制分配给从客户端发送的消息的数据类型。
- jms.messageIDPolicy.messageIDType
-
默认情况下,生成的
String
值用于传出信息中的信息 ID。其他可用的类型有UUID
、UUID_STRING
和PREFIXED_UUID_STRING
。
Presettle 策略选项
Presettle 策略控制生产者或消费者实例何时配置为使用 AMQP 预设置的消息传递语义。
- jms.presettlePolicy.presettleAll
- 如果启用,则所有创建的生产者和非翻译消费者都在预先设置的模式下运作。它默认是禁用的。
- jms.presettlePolicy.presettleProducers
- 如果启用,则所有制作者都以预设模式运作。它默认是禁用的。
- jms.presettlePolicy.presettleTopicProducers
-
如果启用,发送到
Topic
或TemporaryTopic
目标的所有制作者都以预设置模式运行。它默认是禁用的。 - jms.presettlePolicy.presettleQueueProducers
-
如果启用,发送到
Queue
或TemporaryQueue
目标的所有制作者都以预设置模式运行。它默认是禁用的。 - jms.presettlePolicy.presettleTransactedProducers
-
如果启用,在转换的
Session
中创建的任何制作者都以预设置模式运行。它默认是禁用的。 - jms.presettlePolicy.presettleConsumers
- 如果启用,则所有消费者都以预设模式运作。它默认是禁用的。
- jms.presettlePolicy.presettleTopicConsumers
-
如果启用,从
Topic
或TemporaryTopic
目标接收的消费者都以预设置模式运行。它默认是禁用的。 - jms.presettlePolicy.presettleQueueConsumers
-
如果启用,从
Queue
或TemporaryQueue
目标接收的消费者都以预设置模式运行。它默认是禁用的。
序列化策略选项
反序列化策略提供了控制 Java 类型被信任从对象流中取消序列化的方法,同时从传入的 ObjectMessage
检索由序列化 Java Object
内容组成的 正文。默认情况下,在尝试对正文进行反序列的过程中,所有类型都是受信任的。默认反序列策略提供 URI 选项,允许指定 Java 类或软件包名称的白名单和黑名单。
- jms.deserializationPolicy.whiteList
-
以逗号分隔的类和软件包名称列表,在对
ObjectMessage
的内容进行反序列时允许,除非被blackList
覆盖。这个列表中的名称不是模式值。必须配置具体的类或软件包名称,如java.util.Map
或java.util
所示。软件包匹配包括子软件包.默认值为允许所有. - jms.deserializationPolicy.blackList
-
以逗号分隔的类和软件包名称列表,在对
ObjectMessage
的内容进行降序时应拒绝这些列表。这个列表中的名称不是模式值。必须配置具体的类或软件包名称,如java.util.Map
或java.util
所示。软件包匹配包括子软件包.默认设置是防止 none。