如何测试Camel-Mail组件?

时间:2014-02-24 19:32:08

标签: java smtp apache-camel integration-testing

我遇到的情况是我使用Camel-Mail从后端进程生成电子邮件。有些时候,电子邮件会被发送,有些时候电子邮件不会被发送。我添加了日志记录语句,以验证在电子邮件没有出去的情况下Camel-Mail组件正在执行。所以我的路线或Camel-Mail组件本身出了问题。

在一个完美的世界中,我想完全转储Camel-Mail生成的整个SMTP请求,因此我可以看到它用于连接的所有SMTP属性/设置,连接详细信息等在它发出请求之前到SMTP服务器我还想确保Camel-Mail不会捕获/忽略任何SMTP /网络异常,或者它没有将它们记录到我永远不会收到日志声明的地方。

如何从Java实现这一目标?我如何看待:

  • 如果Camel正在抛出/捕获/忽略任何从未冒泡到我的应用程序的异常?或
  • 如果Camel在某些情况下无法连接到SMTP服务器;或
  • 如果Camel在某些情况下没有设置某些SMTP属性,导致SMTP服务器忽略或删除请求?

1 个答案:

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

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