【问题标题】:Debugging errors in consuming asynchronous events in apache camel在 apache camel 中使用异步事件的调试错误
【发布时间】:2014-09-08 11:27:00
【问题描述】:

我在我的应用程序中使用 apache camel。我用camelContextproducerTemplate发消息:

template.send("seda://destination")

消费者看起来像这样:

from("seda://destination").process(new Processor {
    override def process(exchange: Exchange): Unit = {
        // some processing
    }
})

这在我的开发环境中运行良好。但是在生产中,尽管生产者发送了消息,但我根本看不到消费者的控制权。我也没有在日志中看到任何错误。有没有办法调试这个? dev 和 prod 环境之间的唯一区别是我设置了一个代理来通过 Internet 与服务进行通信。

【问题讨论】:

  • 您需要深入挖掘并查看日志等中发生的情况,并提供有关您所做的“代理”等的更多详细信息。您的信息和问题太模糊,我们无法提供帮助。
  • 解决了这个问题。这是由于另一个使用 httpclient 的库并且它没有通过代理。它甚至没有记录超时错误,因此无法缩小问题范围。
  • @coder 如果您在下面的答案中提供一些详细信息会很好,以便我们将来参考。

标签: java scala apache-camel event-driven-design


【解决方案1】:

该应用程序基本上是使用 twitter 流 API 拉推文。一旦一条推文进来,我正在使用骆驼的producerTemplate 生成一条消息。有一个消费者正在接收这条消息。在这个消费者中,有一个组件正在对另一个服务进行 http 调用。但在我的生产环境中,我只能通过 http 代理与外部世界通信。进行 http 调用的库正在使用apache commons httpClient。由于代理未添加到此httpClient,因此消费者只能处理一条推文。我最初使用seda。我将其更改为 direct 并看到我的进程在处理完一条推文后就卡住了。主要问题是它没有超时或抛出任何错误,因此很难缩小问题范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多