Talend作业未提供任何回复

时间:2019-02-13 14:31:26

标签: java talend esb

我正在Talend Open Studio for ESB中设计工作。我的目标是创建一个工作来处理带有数据的文件。该作业用于Web服务,该服务部署在服务器上。该Web服务是SOAP类型,由以下组件组成:

  • tESBProviderRequest
  • tESBProviderResponse,
  • 处理工作。

一切正常,直到处理包含大量数据的文件为止。这需要一些时间,最后它会引发运行时异常并显示以下消息: “ Talend职位未提供回复

顺便说一句。其他一切工作正常-整个文件的处理。 但是最后抛出了异常。

我可以看到用Java生成的代码(不幸的是,无法对其进行编辑)。而且我发现了以下代码片段:

/**
 * message exchange controller
 */
public class QueuedMessageHandlerImpl<IN, OUT> implements
        ESBProviderCallback {
    private final int MAX_QUEUE_SIZE = 1000;

    private final int WAIT_TIMEOUT_SECONDS = 120;

    private final java.util.concurrent.BlockingQueue<QueuedExchangeContextImpl<IN, OUT>> queue = new java.util.concurrent.LinkedBlockingQueue<QueuedExchangeContextImpl<IN, OUT>>(
            MAX_QUEUE_SIZE);

显然,我只需要120秒即可处理。 我该如何更改?有什么解决方法吗?

2 个答案:

答案 0 :(得分:0)

似乎没有完成,并且任何配置都无法完成。 我使用Talend ESB版本6.5.1。 迁移到7.0.1版本后,此tESBProviderRequest在“高级”部分提供了选项: https://help.talend.com/reader/6pO1HSkFat02LpDF_xCmsg/XXo1~pvJC7rmkmJ0J_E0fg

所以我为时间设置了新的值,并且有效。

答案 1 :(得分:0)

您可能希望重新考虑设计-使用同步(阻塞)Web服务来处理文件,让客户端等到处理完成时,处理时间会增加,这已如您所见。 / p>

您是否考虑过实现异步设计?客户端将在此处向Web服务发送请求,Web服务的唯一任务是接受请求并将这些请求放置到消息传递队列中,从而使客户端有更多的时间来做其他事情。至少,您可以将请求与处理分离,并避免在文件较大时出现超时问题。请注意,HTTP在某种程度上也内置了会话超时,因此最好通过使用其他设计完全避免该问题。

最后一件事,我强烈建议您在使用Talend ESB时尝试从工作使用迁移出去-您应该真正检查Routes,这些路由用于生成Apache Camel代码。在您的用例中,它们比作业强大得多,并且可以与ActiveMQ(与Studio捆绑在一起)结合使用。

Talend ESB Studio附带了一些演示,您可以导入和检出它们,我强烈建议您从此处开始。