我遇到的情况是我使用Camel-Mail从后端进程生成电子邮件。有些时候,电子邮件会被发送,有些时候电子邮件不会被发送。我添加了日志记录语句,以验证在电子邮件没有出去的情况下Camel-Mail组件是正在执行。所以我的路线或Camel-Mail组件本身出了问题。
在一个完美的世界中,我想完全转储Camel-Mail生成的整个SMTP请求,因此我可以看到它用于连接的所有SMTP属性/设置,连接详细信息等在它发出请求之前到SMTP服务器。我还想确保Camel-Mail不会捕获/忽略任何SMTP /网络异常,或者它没有将它们记录到我永远不会收到日志声明的地方。
如何从Java实现这一目标?我如何看待:
答案 0 :(得分:2)
您可以使用doTry()将您的呼叫包裹到邮件端点。
from("direct:start")
.doTry()
.to("smtp://matt@stackoverflow.com")
.doCatch(Exception.class)
.to("log:somethings wrong")
.doFinally()
.to("mock:finally")
.end();
显然在.doCatch块中做一些更有用的事情。这将捕获邮件组件抛出的任何异常。
更新:添加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>