NMS.ActiveMQ URI 配置
配置 NMS.ActiveMQ
所有配置都是通过 URI 编码的参数实现的,这些参数可以在连接或目标上设置。通过 URI,您可以配置 NMS.ActiveMQ 客户端的几乎所有方面。下表显示了完整的参数集。
连接 URI 参数
示例配置
使用 Generic NMSConnectionFactory 类如下所示
var cf = new NMSConnectionFactory("activemq:tcp://127.0.0.1:61616?wireFormat.tightEncodingEnabled=true");
您也可以使用 ActiveMQ ConecctionFactory 实现目录
var cf = new Apache.NMS.ActiveMQ.ConnectionFactory("tcp://127.0.0.1:61616?wireFormat.tightEncodingEnabled=true");
协议选项
选项 | 描述 |
---|---|
tcp | 使用 TCP/IP 套接字连接到代理。 |
ssl | 使用 TCP/IP 套接字连接到代理,并添加 SSL 层。 |
discovery | 使用发现传输找到代理 |
failover | 使用故障转移传输连接并重新连接到一个或多个代理 |
传输选项
TCP 传输选项
选项 | 默认 | 描述 |
---|---|---|
transport.useLogging | false | 记录通过传输发送的数据。 |
transport.receiveBufferSize | 8192 | 从套接字缓冲的数据量 |
transport.sendBufferSize | 8192 | 写入套接字之前缓冲的数据量 |
transport.receiveTimeout | 0 | 等待更多数据的时长,零表示无限期等待 |
transport.sendTimeout | 0 | 发送超时时间,0 表示无限期等待完成 |
transport.requestTimeout | 0 | 等待请求命令被认为失败的时间 |
发现传输选项
故障转移传输选项
在 NMS.ActiveMQ v1.4.0 之前,故障转移传输选项没有使用 transport.*
前缀。
选项 | 默认 | 描述 |
---|---|---|
transport.timeout | -1 | 发送操作在失败之前阻塞的时长。 |
transport.initialReconnectDelay | 10 | 传输在第一次尝试重新连接之前等待的毫秒数。 |
transport.maxReconnectDelay | 30000 | 传输在尝试重新连接之前等待的最长时间(毫秒)。 |
transport.backOffMultiplier | 2 | 如果使用指数回退,重新连接延迟将乘以的倍数。 |
transport.useExponentialBackOff | true | 延迟之间的连接尝试是否应该在每次尝试中增长,直到达到最大重新连接延迟。 |
transport.randomize | true | 是否应从可用 URI 列表中随机选择要连接的 URI。 |
transport.maxReconnectAttempts | 0 | 传输在失败之前尝试重新连接的次数(0 表示无限次重试) |
transport.startupMaxReconnectAttempts | 0 | 传输在失败之前尝试重新连接的次数,前提是没有建立连接。(0 表示无限次重试) **(包含在 NMS.ActiveMQ v1.5.0+)** |
transport.reconnectDelay | 10 | 传输在尝试重新连接之前等待的毫秒延迟。 |
transport.backup | false | 故障转移传输是否应维护热备份。 |
transport.backupPoolSize | 1 | 如果启用,将建立多少个热备份连接。 |
transport.trackMessages | false | 保留正在传输的消息的缓存,这些消息将在重新连接时刷新到代理 |
transport.maxCacheSize | 256 | 如果启用 trackMessages,将缓存的消息数量。 |
transport.updateURIsSupported | true | 根据发送到客户端的 BrokerInfo 消息更新已知代理列表。 |
连接选项
连接选项可以通过 connection.*
前缀或 nms.*
前缀设置,类似于 Java 客户端的 jms.*
前缀设置。
选项 | 默认 | 描述 |
---|---|---|
connection.AsyncSend | false | 消息是否异步发送。 |
connection.AsyncClose | true | 关闭命令是否应异步发送 |
connection.AlwaysSyncSend | false | 导致生产者发送的所有消息都异步发送。 |
connection.CopyMessageOnSend | true | 复制生产者发送的消息对象,以便客户端可以重复使用消息对象,而不会影响正在传输的消息。 |
connection.ProducerWindowSize | 0 | ProducerWindowSize 是生产者在等待代理的确认消息(表示它已接受先前发送的消息)之前,生产者在内存中传输到代理的最大字节数。换句话说,这是您为异步发送配置生产者流量控制窗口的方式,在异步发送中,客户端负责管理内存使用情况。默认值为 0,表示客户端没有流量控制。另请参见 生产者流量控制 |
connection.useCompression | false | 消息体在发送之前是否应压缩。 |
connection.sendAcksAsync | false | 消息确认是否应异步发送 |
connection.messagePrioritySupported | true | 消息是否应根据消息优先级头的值传递给客户端。 |
connection.dispatchAsync | false | 代理是否应 异步将消息调度 到连接的消费者。 |
connection.watchTopicAdvisories | true | 客户端是否应观察代理发出的咨询消息,以跟踪临时目标的创建和删除。 |
OpenWire 选项
选项 | 默认 | 描述 |
---|---|---|
wireFormat.stackTraceEnabled | false | 代理上发生的异常的堆栈跟踪是否应发送到客户端?仅适用于 openwire 协议。 |
wireFormat.cacheEnabled | false | 常用的重复值是否应被缓存,以减少编组?仅适用于 openwire 协议。 |
wireFormat.tcpNoDelayEnabled | false | 不影响线格式,但向对等体提供提示,表明 TCP 无延迟应在通信套接字上启用。仅适用于 openwire 协议。 |
wireFormat.sizePrefixDisabled | false | 序列化消息是否应包含有效载荷长度前缀?仅适用于 openwire 协议。 |
wireFormat.tightEncodingEnabled | false | 线大小是否应优化为 CPU 使用率?仅适用于 openwire 协议。 |
wireFormat.maxInactivityDuration | 30000 | 最大空闲时长(在此时长之前,套接字被认为已死),以毫秒为单位。在某些平台上,套接字可能需要很长时间才能看起来已死,因此我们允许代理在套接字空闲一段时间后杀死连接。由某些传输使用来启用保持活动的心跳功能。设置为小于或等于 0 的值以禁用空闲监控。 |
maxInactivityDurationInitalDelay | 10000 | 开始最大空闲检查的初始延迟(是的,“Inital”这个词应该是这样拼写的) |
目标 URI 参数
示例配置
d = session.CreateTopic("com.foo?consumer.prefetchSize=2000&consumer.noLocal=true");
一般选项
选项 | 默认 | 描述 |
---|---|---|
consumer.prefetchSize | 1000 | 消费者将 预取 的消息数量。 **在 v1.7.0 中删除,改用连接预取策略。** |
consumer.maximumPendingMessageLimit | 0 | 用于控制如果出现 慢速消费者 情况,消息是否会被丢弃。 |
consumer.noLocal | false | 与主题消费者的 noLocal 标志相同。在此公开,以便它可以与队列一起使用。 |
consumer.dispatchAsync | false | 代理是否应 异步将消息调度 到消费者。 |
consumer.retroactive | false | 这是一个 追溯消费者 吗。 |
consumer.selector | null | 与消费者一起使用的 JMS 选择器。 |
consumer.exclusive | false | 这是一个 独占消费者 吗。 |
consumer.priority | 0 | 允许您配置 消费者优先级。 |
仅限 OpenWire 的选项
选项 | 默认 | 描述 |
---|---|---|
consumer.browser | false | |
consumer.networkSubscription | false | |
consumer.optimizedAcknowledge | false | 启用优化确认模式,其中消息按批次确认而不是单独确认。或者,您可以使用 Session.DUPS_OK_ACKNOWLEDGE 确认模式作为消费者,这通常更快。**警告** 启用此模式可能会导致重新连接时自动确认出现一些问题。 |
consumer.noRangeAcks | false | |
consumer.retroactive | false | 设置追溯消费者是否启用。追溯消费者允许非持久主题订阅者接收在非持久订阅者启动之前发布的旧消息。 |