tESBConsumer Runtime Timeout Configuration

Six Stars

tESBConsumer Runtime Timeout Configuration

Dear community colleagues,

 

I have a REST service that consumes a SOAP service using tESBConsumer component. This SOAP call sometimes can take some minutes to return and when it reaches a defined timeout limit, the component throws an error going to OnComponentError trigger, so the REST service returns a HTTP 408 timeout with an ID and redirects the request to ActiveMQ.

 

Then there is a route that captures this message from ActiveMQ and redirects it to a job that basically does the same SOAP call, but now the tESBConsumer component has a higher timeout limit and the component response is redirected to another queue, so the client can request the SOAP service response after it has finished using another REST operation. This way the SOAP service response is already stored in the queue and the client won't need to keep waiting.

This scenario works perfectly when running both REST service job and route on Studio, where I can configure the tESBConsumer timeout parameters in component's advanced settings (Connection timeout and Receive Timeout). But the Studio itself shows a message that this needs to be configured in another way in Runtime and asks to see the Documentation.

 

The components documentation shows the following instructions to configure timeout limit for tESBConsumer:

 

Create a configuration file with the name org.apache.cxf.http.conduits-<endpoint_name>.cfg in the <TalendRuntimePath>/container/etc/ folder.

Specify the url of the Web service and the client.ConnectionTimeout parameter in milliseconds in the configuration file. If you need to use the Receive time out option, specify the client.ReceiveTimeout in milliseconds too. The url can be a full endpoint address or a regular expression containing wild cards, for example:

url = http://localhost:8040/*
client.ConnectionTimeout=10000000
client.ReceiveTimeout=20000000

, in which http://localhost:8040/* matches all urls starting with http://localhost:8040/.


So following these instructions I created two files in etc folder like this:

 

org.apache.cxf.http.conduits-Clientes.cfg

 

url = http://ws.serviceurl.com.br/wsprincipal/*
client.ConnectionTimeout = 60000
client.ReceiveTimeout = 120000

 

org.apache.cxf.http.conduits-Clientes_Route.cfg

 

url = http://ws.serviceurl.com.br/wsprincipal/*
client.ConnectionTimeout = 120000
client.ReceiveTimeout = 600000

The issue I'm facing is that the Runtime is reading both of these config files but it is not relating them according with the endpoint name. The timeout configuration seems to apply globally and since these files point to the same soap service URL, both REST service and Route ends by using the same timeout configuration from the last config file put in etc directory.

 

Is there a way to force one configuration for the Route and other for the REST Job?

 

Thank you in advance.

 

Best regards,

Anselmo



http://www.talendbrasil.com.br
Moderator

Re: tESBConsumer Runtime Timeout Configuration

Hello,

Have you already checked the provider for this timeout issue?  For the DI perspective, running the job with the generated .sh file, the connection time out properties setting in component will be respected in batch file.

Best regards

Sabrina

--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.

2019 GARTNER MAGIC QUADRANT FOR DATA INTEGRATION TOOL

Talend named a Leader.

Get your copy

OPEN STUDIO FOR DATA INTEGRATION

Kickstart your first data integration and ETL projects.

Download now

An API-First Approach to Modernizing Applications

Learn how to use an API-First Approach to Modernize your Applications

Watch Now

Talend API Designer – Technical Overview

Take a look at this technical overview video of Talend API Designer

Watch Now

Getting Started with APIs

Find out how to get started with APIs

Read