第 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
-
追踪提供程序的名称。支持的值有
opentracing和noop。默认值为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_FAILED和MODIFIED_FAILED_UNDELIVERABLE.默认值为MODIFIED_FAILED_UNDELIVERABLE。
消息 ID 策略选项
消息 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
-
如果启用,则发送到主题或
Temporary目的地的任何生成者在 presettled 模式中运行。它默认是禁用的。Topic - jms.presettlePolicy.presettleQueueProducers
-
如果启用,则发送到
Queue或TemporaryQueue目的地的任何制作者都在预先设置的模式下运行。它默认是禁用的。 - jms.presettlePolicy.presettleTransactedProducers
-
如果启用,在 transacted
Session中创建的任何制作者都以预先设置的模式运行。它默认是禁用的。 - jms.presettlePolicy.presettleConsumers
- 如果启用,则所有消费者都以预先设置的模式运行。它默认是禁用的。
- jms.presettlePolicy.presettleTopicConsumers
-
如果启用,则从主题或
Temporary目的地接收的消费者以 presettled 模式运行。它默认是禁用的。Topic - jms.presettlePolicy.presettleQueueConsumers
-
如果启用,则从
Queue或TemporaryQueue目的地接收的任何消费者都在预先设置的模式下运行。它默认是禁用的。
解序列化策略选项
解序列化策略提供了一种方式,控制哪些 Java 类型可信任从对象流中反序列化,同时从由序列化 Java 对象内容组成的传入 检索正文。默认情况下,所有类型都会在尝试反序列化正文期间被信任。默认 deserialization 策略提供 URI 选项,允许指定白名单和 Java 类或软件包名称黑名单。
Object Message
- jms.deserializationPolicy.whiteList
-
以逗号分隔的类和软件包名称列表,在停用
ObjectMessage的内容时应允许这些名称,除非被blackList覆盖。此列表中的名称不是模式值。必须配置准确的类或软件包名称,如java.util.Map或java.util中所示。软件包匹配包括子软件包。默认为允许所有。 - jms.deserializationPolicy.blackList
-
以逗号分隔的类和软件包名称列表,在停用
ObjectMessage的内容时应被拒绝。此列表中的名称不是模式值。必须配置准确的类或软件包名称,如java.util.Map或java.util中所示。软件包匹配包括子软件包。默认为防止 none。