我有一个可以抛出异常的mule流(无法连接到连接器,组件抛出异常等)。当发生这种情况时,骡子流停止发生异常的地方。我需要捕获流抛出的任何异常并发送指示发生异常的eMail通知。 (特别是对于像JMS读取那样运行异步的流程)。我应该使用流中的哪个元素来捕获任何异常并发送电子邮件?
我试过了:
<default-exception-strategy>
<smtp:outbound-endpoint host="${email.relay.host}"
mimeType="text/html" from="${email.support.from" to="${email.support.to}"
cc="${email.support.cc}" bcc="${email.support.bcc}" subject="${email.support.subject}">
</smtp:outbound-endpoint>
</default-exception-strategy>
但这根本没有开始。 我也尝试过:
<exception-type-filter expectedType="java.lang.Exception"></exception-type-filter>
但这似乎仅在流抛出异常(正常流功能改变)时才起作用。
@David Dossot - 我添加了以下代码段:
我添加了以下代码段:
<catch-exception-strategy>
<smtp:outbound-endpoint host="${email.relay.host}"
mimeType="text/html" from="${email.support.from" to="${email.support.to}"
cc="${email.support.cc}" bcc="${email.support.bcc}" subject="${email.support.subject}">
</smtp:outbound-endpoint>
</catch-exception-strategy>
但是我在启动mule app时遇到错误:
Root异常堆栈跟踪: org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:从元素'catch-exception-strategy'开始发现无效内容。其中一个'{“http://www.mulesoft.org/schema/mule/core”:抽象消息处理器,“http://www.mulesoft.org/schema/mule/core”:abstract-outbound-endpoint,“http://www.mulesoft.org/schema/mule/core”:响应,“http://www.mulesoft.org/schema/mule/core”:抽象异常策略,“http://www.mulesoft.org/schema/mule/core”:abstract-message-info-mapping}'是预期的。 at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384) + 3个以上(设置调试级别日志记录或'-Dmule.verbose.exceptions = true'用于所有内容)
我正在使用Mule 3.2.2。你能帮忙吗?
答案 0 :(得分:2)
在Mule 3.3上,我通常使用catch-exception-strategy
。
在Mule 3.2和之前,default-exception-strategy
是正确的选择,但有些异常可能无法正确捕获。这已在Mule 3.3中进行了彻底检查。升级的时间?
答案 1 :(得分:1)
尝试使用这个。来自。
<catch-exception-strategy>
<smtp:outbound-endpoint host="${email.relay.host}"
mimeType="text/html" from="${email.support.from}" to="${email.support.to}" cc="${email.support.cc}" bcc="${email.support.bcc}" subject="${email.support.subject}">
</smtp:outbound-endpoint></catch-exception-strategy>