WebSphere Application Server 侦听器端口
安装在 WebSphere® Application Server 中的消息驱动的 bean (MDB) 应用程序还可以使用侦听器端口来处理 IBM® MQ 系统上的消息。
侦听器端口用于检测到达 IBM MQ 系统上的消息,然后将这些消息传递到 MDB 进行处理。 本主题说明侦听器端口如何监视 IBM MQ 系统。
MDB 还可以从其 onMessage() 方法内部与 IBM MQ 系统建立其他连接。
有关这些连接如何使用自动客户机重新连接的更多信息,请参阅 Enterprise JavaBeans 和基于 Web 的应用程序
- 在满足一定限制的情况下支持 CONNECTIONNAMELIST 和 CCDTURL
- 不支持 CLIENTRECONNECTOPTIONS
CONNECTIONNAMELIST 属性
侦听器端口在连接到 IBM MQ时使用 JMS 连接池,因此受使用连接池的影响。 请参阅 激活规范 以获取更多信息。
如果没有可用连接,并且尚未从此连接工厂创建最大连接数,那么将使用 CONNECTIONNAMELIST 属性来尝试创建与 IBM MQ的新连接。
如果 CONNECTIONNAMELIST 中的所有 IBM MQ 系统都不可访问,那么侦听器端口将停止。
然后,侦听器端口将等待消息侦听器服务定制属性 RECOVERY.RETRY.INTERVAL 指定的时间段,然后再次尝试重新连接。
该重新连接尝试将检查连接池中是否有任何空闲的连接,以防两次连接尝试期间返回了连接。 如果没有可用连接,那么侦听器端口会像以前一样使用 CONNECTIONNAMELIST。
侦听器端口重新连接到 IBM MQ 系统后, Java EE 环境将执行所需的任何事务清除,然后恢复将消息传递到 MDB 进行处理。
为了使事务清除正常工作, Java EE 环境必须能够访问失败的队列管理器的日志。
如果侦听器端口与参与 XA 事务的事务 MDB 结合使用,并正在连接到多实例队列管理器,那么 CONNECTIONNAMELIST 必须同时包含活动和备用队列管理器实例的条目。
这意味着,如果环境需要执行事务恢复,那么 Java EE 环境可以访问队列管理器日志,无论环境在发生故障后重新连接到哪个队列管理器。
如果事务 MDB 与独立队列管理器配合使用,那么 CONNECTIONNAMELIST 属性必须包含单个条目,以确保激活规范在发生故障后始终重新连接到同一系统上运行的同一队列管理器。
CCDTURL 属性
启动时,侦听器端口尝试使用 CCDT 中的第一个条目连接到 QMANAGER 属性中指定的队列管理器。
如果侦听器端口无法使用该表中的第一个条目连接到队列管理器,那么侦听器端口会继续使用第二个条目并依次尝试后续条目,直到建立了与队列管理器的连接,或者到达该表末尾为止。
如果侦听器端口无法使用 CCDT 中的任何条目连接到指定的队列管理器,那么侦听器端口将停止。
然后,侦听器端口将等待消息侦听器服务定制属性 RECOVERY.RETRY.INTERVAL 指定的时间段,然后再次尝试重新连接。
此重新连接尝试会像以前一样遍历 CCDT 中的所有条目。
一旦侦听器端口处于运行状态,它就会从 IBM MQ 系统获取消息并将这些消息传递到 MDB 进行处理。
如果在处理消息时队列管理器发生故障,那么 Java EE 环境会检测到故障并尝试重新连接侦听器端口。 侦听器端口在执行重新连接尝试时使用 CCDT 中的信息。
如果侦听器端口尝试了 CCDT 中的所有条目后仍无法连接到队列管理器,那么该端口将等待 RECOVERY.RETRY.INTERVAL 属性指定的时间段,然后再重试。
消息侦听器服务属性 MAX.RECOVERY.RETRIES 定义连续重新连接尝试次数,达到该次数后将停止侦听器端口并需要手动重新启动。
侦听器端口重新连接到 IBM MQ 系统后, Java EE 环境将执行所需的任何事务清除,然后恢复将消息传递到 MDB 进行处理。
为了使事务清除正常工作, Java EE 环境必须能够访问失败的队列管理器的日志。
如果侦听器端口与参与 XA 事务的事务 MDB 结合使用,并正在连接到多实例队列管理器,那么 CCDT 必须同时包含活动和备用队列管理器实例的条目。
这意味着,如果环境需要执行事务恢复,那么 Java EE 环境可以访问队列管理器日志,无论环境在发生故障后重新连接到哪个队列管理器。
如果事务 MDB 与独立队列管理器结合使用,那么 CCDT 必须包含单个条目,以确保在发生故障之后,侦听器端口始终重新连接到同一系统上运行的同一队列管理器。
确保已为 CCDT 上的 AFFINITY 属性设置缺省值 PREFERRED (与侦听器端口配合使用) ,以便与同一活动队列管理器建立连接。
CLIENTRECONNECTOPTIONS 属性
侦听器端口提供自己的重新连接功能。 提供的功能允许侦听器端口在连接到的队列管理器发生故障时自动重新连接到 IBM MQ 系统。
因此,不支持 IBM MQ classes for JMS 提供的自动客户机重新连接功能。
对于 Java EE中使用的所有侦听器端口,必须将 CLIENTRECONNECTOPTIONS 属性设置为 DISABLED 。