连接配置 URI
使用 ActiveMQ Classic > 配置传输 > ActiveMQ Classic 连接 URI > 连接配置 URI
连接配置 URI
可以通过在 ActiveMQConnection 或 ActiveMQConnectionFactory 对象上显式设置属性,或使用以下 URI 语法来配置 Apache ActiveMQ Classic 连接。
示例
在常规连接 URI 上设置名为 jms.$PROPERTY
的属性。例如,可以在 ActiveMQConnectionFactory 上将 brokerURL
设置为以下值以启用 异步发送
tcp://127.0.0.1:61616?jms.useAsyncSend=true
连接选项
使用正确的前缀!
在
brokerURL
或代理的传输连接器上使用以下选项时,应以jms.
为前缀。
选项名称 | 默认值 | 描述 |
---|---|---|
alwaysSessionAsync |
true |
当 true 时,将使用单独的线程为连接中的每个会话调度消息。当存在多个会话或会话未处于 Session.AUTO_ACKNOWLEDGE 或 Session.DUPS_OK_ACKNOWLEDGE 模式时,始终使用单独的线程。 |
alwaysSyncSend |
false |
当 true 时,即使不需要进行传递模式,MessageProducer 在发送消息时也将始终使用同步发送。 |
auditDepth |
2048 |
将被审核以查找重复和乱序消息的消息窗口大小。 |
auditMaximumProducerNumber |
64 |
将被审核的生产者最大数量。 |
checkForDuplicates |
true |
当 true 时,消费者将检查重复消息并适当地处理消息,以确保不会无意中处理两次该消息。 |
clientID |
null |
设置连接要使用的 JMS clientID。 |
closeTimeout |
15000 |
设置在关闭被视为完成之前的超时时间(以毫秒为单位)。通常,连接上的 close() 操作将等待代理的确认。这使关闭操作能够超时,从而防止客户端在代理不可用时挂起。 |
consumerExpiryCheckEnabled |
true |
控制是否在每个 MessageConsumer 中调度消息之前执行消息过期检查。禁用此检查会导致消耗过期消息。(自 5.11 起)。 |
copyMessageOnSend |
true |
JMS 消息是否应该作为 JMS 中的 send() 方法的一部分复制到新的 JMS 消息对象中。默认情况下,这是启用的,以符合 JMS 规范。为了提高性能,如果在发送后不更改 JMS 消息,请将其设置为 false 。 |
disableTimeStampsByDefault |
false |
设置消息上的时间戳是否应该被禁用。为了提高性能,请将其设置为 false 。 |
dispatchAsync |
false |
代理是否应该 异步调度消息 到消费者? |
nestedMapAndListEnabled |
true |
控制是否支持 结构化消息属性和 MapMessages,以便消息属性和 MapMessage 条目可以包含嵌套的 Map 和 List 对象。从 4.1 版本开始提供。 |
objectMessageSerializationDefered |
false |
当在 ObjectMessage 上设置对象时,JMS 规范要求该对象由该 set 方法序列化。当 true 时,对象将不会被序列化。如果需要通过套接字发送消息或将其存储到磁盘,该对象可能会随后被序列化。 |
optimizeAcknowledge |
false |
启用优化的确认模式,其中消息按批次而不是逐个确认。或者,可以为消费者使用 Session.DUPS_OK_ACKNOWLEDGE 确认模式,这通常更快。警告:启用此问题可能会导致自动确认在重新连接时出现一些问题。 |
optimizeAcknowledgeTimeOut |
300 |
如果 > 0,则指定启用 optimizeAcknowledge 时批次确认之间的最大时间(以毫秒为单位)。(自 5.6 起)。 |
optimizedAckScheduledAckInterval |
0 |
如果 > 0,则指定一个时间间隔,在此时间间隔上,使用优化确认时,所有未完成的 ACK 将被传递,以便长时间运行的消费者(没有收到更多消息)最终将 ACK 最近几个未 ACK 的消息。(自 5.7 起)。 |
optimizedMessageDispatch |
true |
如果 true ,则将使用更大的预取限制 - 仅适用于持久主题订阅者。 |
useAsyncSend |
false |
强制使用 异步发送,这会带来巨大的性能提升;但意味着 send() 方法将立即返回,无论消息是否已发送,这会导致消息丢失。 |
useCompression |
false |
启用对消息正文使用压缩。 |
useRetroactiveConsumer |
false |
设置是否启用追溯性消费者。追溯性消费者允许非持久主题订阅者接收在非持久订阅者启动之前发布的旧消息。 |
warnAboutUnstartedConnectionTimeout |
500 |
从连接创建时间到在连接未通过 Connection.start() 适当地启动且消费者收到消息时生成警告的时间(以毫秒为单位)。忘记 启动连接并想知道为什么没有传递消息 是一个非常常见的错误,因此此选项使默认情况下创建警告,如果用户忘记。要禁用警告,只需将该值设置为 < 0 。 |
nonBlockingRedelivery |
false |
消息重新传递(以及任何相关的延迟)是否会阻止其他消息的传递。设置为 true 将允许消息按乱序传递。 |
嵌套选项
还可以使用给定的前缀配置连接对象上的嵌套对象。有关每个单独属性的细分,请参阅 javadoc。
选项名称 | 配置的对象 | 另请参阅 |
---|---|---|
jms.blobTransferPolicy.* |
BlobTransferPolicy | Blob 消息 |
jms.prefetchPolicy.* |
ActiveMQPrefetchPolicy | 预取限制是用来做什么的? |
jms.redeliveryPolicy.* |
RedeliveryPolicy | 重新传递策略 |
例如,可以设置
tcp://127.0.0.1:61616?jms.prefetchPolicy.all=100&jms.redeliveryPolicy.maximumRedeliveries=5