Talend工作没有提供任何回应

问题描述 投票:1回答:2

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

  • tESBProviderRequest,
  • tESBProviderResponse,
  • 过程工作。

一切正常,直到处理具有大量数据的文件。这需要一些时间,最后它会抛出一个运行时异常,并带有消息:“Talend job没有提供响应”

顺便说一下。其他一切工作正常 - 整个文件的处理。但最终会抛出异常。

我可以看到用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秒的时间来处理。我该怎么改变它?有没有解决方法?

java talend esb
2个回答
0
投票

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

所以我为时间设置了新的价值并且它起作用了。


0
投票

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

您是否考虑过实现异步设计?这将是客户端向Web服务发送请求的地方,该服务的唯一任务是接受请求并将这些请求放入消息传递队列,从而释放客户端以执行其他操作。至少,您将请求与处理分离,并避免在文件很大时发生超时问题。请注意,某个级别的HTTP也内置了会话超时,因此最好通过使用不同的设计来完全避免该问题。

最后一点,我强烈建议您在使用Talend ESB时尝试远离作业使用 - 您应该检查Routes,它们用于生成Apache Camel代码。它们比用例更强大,可以与ActiveMQ(与Studio捆绑在一起)配合使用。

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

© www.soinside.com 2019 - 2024. All rights reserved.