【问题标题】:Weblogic/Message Driven Bean processing issueWeblogic/Message Driven Bean 处理问题
【发布时间】:2012-01-16 02:47:16
【问题描述】:

技术:

Jave EE、Weblogic 10.3、JMS

场景:

一个 EJB 模块,比如 Module_1,具有 3 个不同的消息驱动 Bean (MDB) 类,监视 3 个不同的 Java 消息队列 (JMS)。消息不断地添加到这些 bean 中。

问题:

每天一次,在某个时间,我需要重新启动整个 Weblogic Server 而不会丢失任何消息。此外,此服务器上还部署了另一个模块,例如 Module_2。而且我需要确保 Module_2 在 Module_1 之前启动。

如果任何 MDB 在预定义的关闭时间正在处理任何消息,那么我想我将不得不等待它完成。虽然不确定。

有人可以建议任何标准方法/配置来实现这一目标吗?

另外,如果 Weblogic Server 不加任何注意地直接重启会怎样?这将如何影响仍在队列中的消息和正在处理的消息?

谢谢。

【问题讨论】:

    标签: jakarta-ee ejb jms weblogic message-driven-bean


    【解决方案1】:

    模块启动的顺序是一个配置参数:查看 config.xml 中的<deployment-order>10200</deployment-order>。编号较低的模块在编号较高的模块之前部署。

    至于关机,您需要执行“正常关机”(http://docs.oracle.com/cd/E13222_01/wls/docs81/adminguide/overview_lifecycle.html#1045901)。这应该使队列停止接受新消息,确保所有消息都被持久化,然后等待任何正在进行的消息被处理。只有这样它才会停止。

    如果您在发生硬故障后重新启动,则正在进行的消息将被重新处理,因为它没有正确完成。通常,这是预期的行为。

    【讨论】:

      猜你喜欢
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多