Mule手动关闭是否允许完成电流?

Mule手动关闭是否允许完成电流?,mule,Mule,我正在Linux上的mule-standalone-3.5.0上运行一个流程,并试图了解在手动关闭服务器的情况下会发生什么 现在,我看到当前正在运行的“main”流,它是一个递归循环,在关闭期间继续,足够长的时间来完成当前消息的处理。我想知道这是“优雅关机”的一部分还是仅仅是好运 它确实尝试再次调用自己,我通过检查流的运行状态来停止调用,我知道流会很快停止 def flow = muleContext.getRegistry().lookupFlowConstruct("initFlow")

我正在Linux上的mule-standalone-3.5.0上运行一个流程,并试图了解在手动关闭服务器的情况下会发生什么

现在,我看到当前正在运行的“main”流,它是一个递归循环,在关闭期间继续,足够长的时间来完成当前消息的处理。我想知道这是“优雅关机”的一部分还是仅仅是好运

它确实尝试再次调用自己,我通过检查流的运行状态来停止调用,我知道流会很快停止

def flow = muleContext.getRegistry().lookupFlowConstruct("initFlow")

if ((flow.isStopped() || flow.isStopping())) {
     message.setInvocationProperty('runState', 'stopping')
}
else {
     message.setInvocationProperty('runState', 'running')   
} 

每当Mule收到关闭信号时,它都会确保完成当前消息的处理以避免数据丢失,然后开始关闭所有端点和流,以及线程池清理。嗯。

可能是另一个问题。收到关机信号后,Mule如何知道它已完成当前消息的处理?我不知道Mule是如何完成的,因此最好打开另一个线程,但是我假设Mule会在内存中的某个地方跟踪消息。Mule判断它已经处理了每条消息的一个简单方法是检查每个线程池中的线程数量。如果池中的线程数量等于启动线程的数量,则表示当前未处理任何消息。