如果旧服务器仍在运行,则Weblogic可迁移JMS使用者不会将服务跟随到新的受管服务器

时间:2015-02-08 17:17:57

标签: migration jms weblogic

我有一个针对可迁移目标的JMS服务(使用Auto-Migrate Exactly-Once策略)在一个由2个托管服务器组成的集群中,服务托管在其中一个服务器和消费者的任何时间点(无论服务在何处托管,都应该无缝地接收消息)。

当我手动切换可迁移目标的主机(单击迁移)而不关闭托管受管服务器时,使用者无法接收发送到队列的消息,除非我关闭以前的托管受管服务器强制使用者新主持人。

我可以排除发件人问题,我可以在发送后立即看到队列中的邮件。

如果有人可以建议如何配置使用者或可迁移服务以便在迁移时无缝地工作,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为这可能只是对移民工作方式的误解。 docs州完全自动迁移一次:

  

表示候选列表中至少有一个受管服务器   正在运行,然后JMS服务将在某处运行   群集,如果服务器应该失败或关闭(优雅或   强制)。例如,托管路径服务的可迁移目标   应该使用此选项,以便托管服务器出现故障或关闭时   路径服务将自动迁移到另一台服务器等   将始终在群集中处于活动状态。请注意,此值可能会导致   目标分组。例如,如果您有五次完全可迁移的话   目标,只启动一个服务器成员,然后全部五个   可迁移目标将在该服务器成员上激活。

文档还说明:

  

手动服务迁移 - 固定JTA和手动迁移   与JMS相关的服务(例如,JMS服务器,SAF代理,路径   主机服务器实例失败后的服务和自定义存储

您的服务器/服务既没有失败也没有关闭,您正在强制它在健康主机仍在运行的情况下进行迁移,因此它不符合迁移条件。

还可以查看更多here

答案 1 :(得分:0)

我有一些听起来让人想起你正在看的东西的经历。作为集群服务器设计的一部分,有一些特定于WLS的功能可以识别JMS目标中的重新配置。

在一个案例中,我不得不调用特定于WLS的方法:weblogic.jms.extensions.WLSession.setExceptionListener()。这是他们实现的JMS Session接口。这类似于标准JMS Connection.setExceptionListener()。

使用此特定于WLS的功能,WLSession.setExceptionListener()回调将发生在消费客户端应拆除并重新建立连接/会话/消费者以响应已发生的重新配置(迁移)的位置