[AIX Solaris HP-UX Linux Windows][IBM i]

使用非 ASF 侦听器端口进行严格的消息排序

当在还没有将特别设施编码到应用程序中以处理未按顺序到达的消息的情况下,将消息驱动的 Bean 应用程序部署到 IBM MQ 消息传递提供程序时,可以实现严格的消息排序。

对于 WebSphere® Application Server V7 和更高版本,已稳定侦听器端口。有关更多信息,请参阅有关固定功能的文章。您应进行规划,以便将 WebSphere MQ 消息驱动的 Bean 部署配置由使用侦听器端口迁移为使用激活规范。[AIX Solaris HP-UX Linux Windows][IBM i]有关如何为非 ASF 方式配置激活规范的更多信息,请参阅为非 ASF 方式配置激活规范但是,仅当您确定此应用程序不必在版本低于 WebSphere Application Server V7 的应用程序服务器上工作时,您才能开始此迁移。例如,如果应用程序服务器集群中某些成员的版本为 V6.1,而某些成员为更高版本,那么仅当您将该集群中的所有应用程序服务器都迁移到此更高版本之后,才能迁移该集群上的应用程序以使用激活规范。

此方案中进行了下列假定:
  • 消息驱动的 Bean (MDB) 应用程序是事务应用程序。
  • 已将 IBM MQ 队列的回退阈值 (BOTHRESH) 设置为 0

用于有序传递的 WebSphere Application Server 配置

  • 必须通过为 IBM MQ 消息侦听器服务定制属性 NON.ASF.RECEIVE.TIMEOUT 指定非零超时值来激活非 ASF 方式。
  • 必须将侦听器端口的最大会话数设置设定为 1
  • 最大会话数设置为 1 的非 ASF 侦听器端口有单个线程运行在用于检索消息的应用程序服务器中。当消息达到时,该线程会立即将其传递到 MDB。
  • 队列管理器将此线程视为用于检索消息的单个应用程序,因此,会按顺序处理消息。

对于此部署,在事务恢复期间,可能会不按顺序传递消息

必须按特定顺序发生一组特定事件才能遇到这种情况,这是很少见的。但是,如果有序消息传送对于应用程序的运行很重要,那么您必须考虑这种情况。

  • 在从下列其中一个组件的故障中进行恢复期间,使用此部署选项可能会发生无序消息传送:
    • 主管 MDB 的应用程序服务器
    • IBM MQ 队列管理器
    • 连接应用程序服务器和队列管理器的网络
  • 如果其中一个组件在 MDB 事务的两阶段落实期间发生故障,那么应用程序服务器事务管理器将重新建立与队列管理器的连接,以在该组件再次可用时落实该事务。
  • 此恢复过程是一个异步过程,因此有可能在完成事务恢复过程之前就会开始将新消息传送到 MDB。如果事务恢复的结果是要回滚事务,那么该消息将返回到 WebSphere MQ 队列并重新传送到应用程序,此过程有可能在已传送新消息之后进行。

有关集群部署的注意事项

当您使用非 ASF 侦听器端口时,可以将队列的缺省共享 (DEFSOPT) 选项设置为专用。如果您在执行应用程序的集群部署时选择此选项,那么除了一个集群成员之外,其余所有集群成员都将无法启动它们的侦听器端口。这些集群成员将在 WMSG0057E 消息中生成 2042MORC_OBJECT_IN_USE 异常。

发生此异常时,您可以通过在 WebSphere Application Server 中配置以下消息侦听器服务定制属性来为此应用程序建立自动故障转移:

MAX.RECOVERY.RETRIES
对集群中所有服务器的消息侦听器服务配置较大的 MAX.RECOVERY.RETRIES 值。MAX.RECOVERY.RETRIES 的最大值为 2147483647
消息侦听器服务定制属性 MAX.RECOVERY.RETRIES 必须附有适当的消息侦听器服务定制属性 MAX.RECOVERY.INTERVAL。侦听器端口可以重试(而不手动停止并重新启动)的最长时间为 2147483647 乘以为 MAX.RECOVERY.INTERVAL 所指定的值。在此配置中,每个集群成员将连续尝试启动其侦听器端口,直到活动集群成员停止,并且队列管理器允许它作为单个专用使用者来进行连接。

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cmm_wmq_smo_nonasflp
文件名:cmm_wmq_smo_nonasflp.html