![[MQ 9.4.0 2024 年 6 月]](ng940.gif)
![[UNIX、Linux、Windows、IBM i]](ngmulti.gif)
影响 IBM MQ classes for JMS 中的应用程序重新平衡
从 IBM® MQ 9.4.0开始,您可以使用其他常量来设置 ConnectionFactory上的均衡选项属性。 仅当 WMQ_PROVIDER_VERSION 设置为 7时,这些常量才适用。 统一集群中的 Request_reply 应用程序必须允许丢失应答的可能性。
可用的常量
以下常量是用于影响 IBM MQ classes for JMS中的应用程序均衡的常量:
- 重新平衡应用程序类型
- 平衡操作的类型; 由常量 WMQConstants.WMQ_BALANCING_APPLICATION_TYPE 表示
- 必须使用此属性来设置 MQBNO 结构的 ApplicationType 字段。必须设置整数类型的值。 以下是可能的值:
- WMQConstants.WMQ_BALANCING_APPLICATION_TYPE_SIMPLE (缺省值)
- 简单平衡;除 影响统一群集中的应用程序重新平衡 中所述的规则外,不应用其他特定规则。
- WMQConstants.WMQ_BALANCING_APPLICATION_TYPE_REQUEST_REPLY
- 请求-应答平衡; 在每个 MQPUT 调用之后,响应消息需要一个匹配的 MQGET 调用。 将延迟均衡,直到接收到此类消息,或者已超出请求消息 EXPIRY 。
- 必须使用此属性来设置 MQBNO 结构的 ApplicationType 字段。
- 重新平衡选项
- 由发出应用程序设置的平衡选项; 由常量 WMQConstants.WMQ_BALANCING_OPTIONS 表示
- 必须使用此属性来设置 MQBNO 结构的 BalanceOptions 字段。必须设置整数类型的值。 以下是可能的值:
- WMQConstants.WMQ_BALANCING_OPTIONS_NONE (缺省值)
- 未设置任何选项。
- WMQConstants.WMQ_BALANCING_OPTIONS_IGNORE_TRANSACTIONS
- 设置此选项将允许重新平衡应用程序,即使在事务过程中也是如此。
- 必须使用此属性来设置 MQBNO 结构的 BalanceOptions 字段。
- 重新平衡超时
- 超时,在此超时之后,重新平衡可能会中断应用程序活动; 由常量 WMQConstants.WMQ_BALANCING_TIMEOUT 表示
- 必须使用此属性来设置 MQBNO 结构的 Timeout 字段。必须设置整数类型的值。 以下是可能的值:
- WMQConstants.WMQ_BALANCING_TIMEOUT_AS_DEFAULT (缺省值)
- 设置的缺省超时值。 缺省情况下,此值为 10 秒。
- WMQConstants.WMQ_BALANCING_TIMEOUT_IMMEDIATE
- 发生立即超时。
- WMQConstants.WMQ_BALANCING_TIMEOUT_NEVER
- 不发生超时。
- 1 到 999999999 之间的值
- 这表示以秒为单位的值。
注: 必须仅从定义的值中提供一个值,或者提供 0-999999999 秒的值。
- 必须使用此属性来设置 MQBNO 结构的 Timeout 字段。
这些属性在使用 JMSAdmin 或 IBM MQ Explorer 接口的连接工厂的 JNDI 表示中也可设置。
在平衡 REQUEST_REPLY 应用程序时丢失消息的可能性
在 IBM MQ classes for JMS (和 IBM MQ classes for Jakarta Messaging) 中,通过设置请求消息上的 JMSReplyTo 属性来实现请求/应答功能,响应应用程序使用此属性来确定是否发送应答。 在 JMS 术语中, JMSReplyTo 属性是 Destination。将此属性转换为 IBM MQ 操作时,会将 JMSReplyTo 属性作为标准队列 URI 发送-用于标识特定队列管理器上的队列。
由于处理均衡重新连接的异步性质,在将 JMSReplyTo 属性转换为标准 URI 之后,但在将请求消息放入请求队列之前,可能会启动重新连接。 在这些情况下,响应应用程序可能会将其响应发送到原始队列管理器上的原始应答队列,但请求应用程序现在可能正在等待新队列管理器上的应答。
因此,统一集群中的 Request_reply 应用程序必须允许丢失应答的可能性。