我遇到的情况是使用 Camel-Mail从后端进程生成电子邮件。有时会发送电子邮件,有时则不会发送电子邮件。我添加了日志语句来验证 Camel-Mail 组件在电子邮件未发出的情况下是否正在执行。所以我的路由或 Camel-Mail 组件本身出了问题。
在一个完美的世界中,我想对 Camel-Mail 生成的整个 SMTP 请求进行完整转储,这样我就可以看到它用于连接到的所有 SMTP 属性/设置、连接详细信息等。 SMTP 服务器在发出请求之前。我还想确保 Camel-Mail 不会捕获/忽略任何 SMTP/网络异常,或者不会将它们记录到我永远不会收到日志语句的地方。
我如何通过 Java 实现此目的?我怎样才能看到:
- 如果 Camel 抛出/捕获/忽略任何永远不会出现在我的应用程序中的异常?或
- 如果Camel在某些情况下无法连接到SMTP服务器;或
- 如果 Camel 在某些情况下未设置某些 SMTP 属性,会导致 SMTP 服务器忽略或丢弃请求?
最佳答案
您可以使用 doTry() 将调用包装到邮件端点。
from("direct:start")
.doTry()
.to("smtp://matt@stackoverflow.com")
.doCatch(Exception.class)
.to("log:somethings wrong")
.doFinally()
.to("mock:finally")
.end();
显然,在 .doCatch block 中做了一些更有用的事情。这将捕获邮件组件引发的任何异常。
更新:添加 Spring DSL 实现:
<from uri="direct:start"/>
<doTry>
<to uri="smtp://matt@stackoverflow.com"/>
<doCatch>
<exception>java.lang.Exception</exception>
<to uri="log:somethings wrong"/>
</doCatch>
<doFinally>
<to uri="mock:finally"/>
</doFinally>
</doTry>
关于java - 如何测试Camel-Mail组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997185/