问题
是否可以停止消息驱动Bean(以编程方式),以便它不会消耗新消息,而是像往常一样运行事务处理?
(这是How to stop message processing before undeploying?)的后续行动。
鉴于
尝试失败
stopDelivery
,但遗憾的是它会立即关闭事务(请参阅bug #EJBTHREE-1870),从而导致很多异常。NameNotFoundException
。答案 0 :(得分:1)
这里有一个,但几乎所有东西都可以通过包装来实现, 您可以让MDB继续接收消息,但引入布尔stopDelivery, 在消息将由业务逻辑处理之前,检查stopDelivery是否 设置为true,如果是这样,请将消息重新发送回您的队列。
所以即使队列仍然在移动,但除非你取消设置stopDelivery,否则队列的内容会有点冻结