Stomp URI 配置
配置 NMS.Stomp
所有配置都是通过 URI 编码的参数实现的,这些参数要么在连接上,要么在目标上。通过 URI,您可以配置 NMS.Stomp 客户端的几乎所有方面。下表显示了完整的参数集。
连接 URI 参数
示例配置
使用 Generic NMSConnectionFactory 类将如下所示
var cf = new NMSConnectionFactory("stomp:tcp://localhost:61613");
您也可以使用 Stomp ConecctionFactory 实现目录
var cf = new Apache.NMS.Stomp.ConnectionFactory("tcp://localhost:61613");
协议选项
选项名称 | 描述 |
---|---|
tcp | 使用 TCP/IP 套接字连接到代理。 |
ssl | 使用 TCP/IP 套接字连接到代理,并添加 SSL 层(.NETCF 上不可用)。 |
failover | 使用故障转移传输连接并重新连接到一个或多个代理 |
您可以使用 Generic NMSConnectionFactory 类添加故障转移选项,如下所示
var cf = new NMSConnectionFactory("stomp:failover:tcp://localhost:61613");
您也可以使用 Stomp ConecctionFactory 实现目录
var cf = new Apache.NMS.Stomp.ConnectionFactory("failover:tcp://localhost:61613");
传输选项
TCP 传输选项
选项名称 | 默认值 | 描述 |
---|---|---|
transport.useLogging | false | 记录通过传输发送的数据。 |
transport.receiveBufferSize | 8192 | 从套接字缓冲的数据量 |
transport.sendBufferSize | 8192 | 在写入套接字之前缓冲的数据量 |
transport.receiveTimeout | 0 | 等待更多数据的时长,零表示无限期等待 |
transport.sendTimeout | 0 | 发送超时,0 表示永远等待完成 |
transport.requestTimeout | 0 | 在请求命令被认为失败之前等待的时长 |
故障转移传输选项
在 NMS.Stomp 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.Stomp v1.5.0+ 中) |
transport.reconnectDelay | 10 | 传输在尝试重新连接之前等待的毫秒数。 |
连接选项
选项名称 | 默认值 | 描述 |
---|---|---|
connection.AsyncSend | false | 消息是否异步发送。 |
connection.AsyncClose | true | 关闭命令是否应该异步发送 |
connection.AlwaysSyncSend | false | 导致生产者发送的所有消息都异步发送。 |
connection.CopyMessageOnSend | true | 复制生产者发送的消息对象,以便客户端可以重复使用消息对象而不会影响正在传输的消息。 |
connection.useCompression | false | 消息体是否应该在发送之前压缩。 |
connection.sendAcksAsync | false | 消息确认是否应该异步发送 |
connection.messagePrioritySupported | true | 消息是否应该根据消息优先级标头的值传递给客户端。 |
connection.dispatchAsync | false | 代理是否应该 异步调度消息 到连接的消费者。 |
Stomp 线程协议选项
小心
这些值当前不受支持,但计划在以后的版本中发布。
选项名称 | 默认值 | 描述 |
---|---|---|
wireFormat.maxInactivityDuration | 30000 | 最大不活动时长(在此之前套接字被认为已死),以毫秒为单位。在某些平台上,套接字可能需要很长时间才能显示为已死,因此我们允许代理在连接长时间不活动时终止连接。一些传输使用它来启用保持活动的心跳功能。设置为 <= 0 的值以禁用不活动监控。 |
wireFormat.maxInactivityDurationInitialDelay | 10000 | 开始最大不活动检查的初始延迟(是的,“Initial”这个词应该是这样拼写的) |
目标 URI 参数
示例配置
d = session.CreateTopic("com.foo?consumer.prefetchSize=2000&consumer.noLocal=true");
常规选项
选项名称 | 默认值 | 描述 |
---|---|---|
consumer.prefetchSize | 1000 | 消费者将 预取 的消息数量。 |
consumer.noLocal | false | 与主题消费者上的 noLocal 标志相同。在此公开,以便它可以与队列一起使用。 |
consumer.dispatchAsync | false | 代理是否应该 异步调度消息 到消费者。 |
consumer.retroactive | false | 这是一个 追溯消费者 吗。 |
consumer.selector | null | 与消费者一起使用的 JMS 选择器。 |
consumer.exclusive | false | 这是一个 独占消费者 吗。 |