java - 如何测试Camel-Mail组件?

标签 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 服务器忽略或丢弃请求?

最佳答案

您可以使用 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>

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

关于java - 如何测试Camel-Mail组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997185/

相关文章:

java - 选择显示 :None With Jsoup

java - 在不阅读完整文件的情况下估计文件的字数

java - spring url 与当前本地日期

java - RabbitMQ队列消费行为

java - Camel 2.11 批量聚合如何与单独的路由一起使用?

java - 如何通过组合两个不同的变量来创建变量名

电子邮件客户端 Thunderbird 中的 Facebook 邮件

php - Hotmail账户收不到Godaddy发来的邮件

joomla - 如何使用 google apps 电子邮件地址配置 Joomla 1.7 SMTP 电子邮件

java - 如何使用 Camel jackson 将 JSONArray 转换为对象列表