Weblogic /消息驱动Bean处理问题

时间:2011-12-08 17:11:26

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

技术:

Jave EE,Weblogic 10.3,JMS

情境:

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

问题:

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

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

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

此外,如果直接重新启动Weblogic Server而没有任何关心怎么办?这将如何影响仍在队列中的消息和处理中间的消息?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

如果在硬故障后​​重新启动,则会重新处理正在进行的消息,因为它未正确完成。通常,这是预期的行为。