如何测试Camel Mail组件



我有一种情况,我使用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块中做一些更有用的事情。这将捕获邮件组件引发的任何异常。

更新:添加SpringDSL实现:

<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>

这是文档的链接-http://camel.apache.org/try-catch-finally.html

最新更新