我在某处读到异常不会从 Mule (3.2) 中的私有(private)流中传播出来。如果是这样,是否还有另一个骡子结构:
- 是一个消息处理器链
- 可以从另一个构造中引用
- 将异常传播到调用结构
?
或者,有没有办法绕过异常不会从私有(private)流中传播的限制?
您可以使用 mule-config.xml 和下面的 java 代码来重现我上面描述的行为,其中异常不会从私有(private)流中传播:
mule-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:stdio="http://www.mulesoft.org/schema/mule/stdio"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/stdio http://www.mulesoft.org/schema/mule/stdio/3.2/mule-stdio.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd">
<stdio:connector name="unused" promptMessage="Yes? " messageDelayTime="1000" />
<flow name="throwsException">
<component class="apackage.ThrowsException" />
</flow>
<flow name="echo">
<stdio:inbound-endpoint system="IN"/>
<flow-ref name="throwsException" />
<component class="apackage.DuplicateString" />
<stdio:outbound-endpoint system="OUT"/>
</flow>
</mule>
ThrowsException.java
package apackage;
public class ThrowsException {
public String throwsException(String string) {
throw new RuntimeException();
}
}
DuplicateString.java
package apackage;
public class DuplicateString {
public String duplicateString(String string) {
return string.concat(string);
}
}
最佳答案
看起来您想使用子流而不是另一个流。
- 一个流程,有自己的生命周期、异常处理和处理策略等。
- 子流的行为与可重用的宏完全相同,它与将相同的处理器复制并粘贴到引用和使用子流的流中相同。
HTH。
关于mule - 如何从私有(private)流中传播异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9202795/