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/*
, 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:
url = http://ws.serviceurl.com.br/wsprincipal/* client.ConnectionTimeout = 60000 client.ReceiveTimeout = 120000
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.
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.
Talend named a Leader.
Kickstart your first data integration and ETL projects.
Learn how to use an API-First Approach to Modernize your Applications
Take a look at this technical overview video of Talend API Designer
Find out how to get started with APIs