Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us in Toronto Sept 9th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
BrijeshDwivedi
Contributor II
Contributor II

Multiple Jobs Deployment in Talend Data Fabric 7.3.1

We are using Talend Data Fabric 7.3.1 to create an API. As the API grows we are concerned that the API will become hard to manage via the Talend Studio GUI tool. We see a couple of things but they don't seem to quite solve our problem. We can create multiple Jobs but this seems to create multiple docker containers (our solution requires that we roll our API out into a Docker container). We do not want more than one container. I also see little +/- signs in the tool which could possibly be used to reduce clutter on the screen when maintaining the API. 

Our question is this: Do you have a documented recommendation to keep large APIs maintainable as they grow in the Talend Data Fabric tool?

Can anyone please suggest the possible way if I want to push more than one job and containerized in a single container ?

Labels (3)
7 Replies
Anonymous
Not applicable

Hi @Brijesh Kumar​,

 

Can I ask, is there a reason why you are not using a Remote Engine to run multiple micro services?

 

I should also point out that it is not a great idea to have massive jobs/services. A good ballpark for the size of jobs/services is around 20 components. You can use child jobs inside your jobs to help do this and it also helps you compartmentalise your "functions" within a job/service.

 

If you can answer my first question, I might have some options.

 

Regards

 

Richard

BrijeshDwivedi
Contributor II
Contributor II
Author

Hi @Richard Hall​ Thanks for your Response!! Answer to your first question is we cant use Remote Engine to run the Microservices we have our own environment and strategy to do the same.

 

We tried with the child jobs also that didn't work since one job can not contain more than one tRESTRequest component once we build it apparently it wont work.

 

Now my ask is can we have a single Image(container) containing multiple jobs.

Anonymous
Not applicable

Hi @Brijesh Kumar​,

 

The reason I asked about the remote engine is that you can add this to a Docker container and then use that to load microservices to it. But if that is not supported by your environment strategy, that's fair enough.

 

With regard to the issue with more than one tRESTRequest component in a job, you are correct. But a single tRESTRequest can handle multiple operations. There are details on how to do this here....

 

https://help.talend.com/r/7NvFnkWpbH8Gy3Rm6mUXnw/QcvbnsL_jqJJ3OavGa_BTQ

 

However, it doesn't cover the use of child jobs. So I have created a quick example. This is a screenshot of my example job working. You can see the output from the different calls made in the system.out below....

 

0695b00000If6CMAAZ.png 

Notice I have a tRESTResponse for each output.

 

My tRESTRequest is configured like this....

 

0695b00000If6CbAAJ.png 

Notice the two API Mappings.

 

The jobServ1 mapping Output Flow is configured like this....

 

0695b00000If6ClAAJ.pngThis allows me to send a "num" query param. Notice the "param" comment. This is essential. The service is called like....

 

http://localhost:8088/demo/servJob1?num=2

 

My JobServ1 Child Job looks like this. It's very simple, but this is just to show the method. I set up a context variable to collect the "num" data from the Child Job settings and pass it on using the tFixedFlowInput. I then create the XML and send it to a tBufferOutput.

0695b00000If6D0AAJ.png 

The JobServ1 component configuration is below. Notice the Context Param section. You need to pass your data to your context variable inside the job like this.

 

The red box is VERY important. This collects the schema of the tBufferOutput inside the job.

 

0695b00000If6D5AAJ.png 

This is another important area. You MUST tick the "Propagate the child result to the output schema" box. This allows the data to be retrieved from the tBufferOutput.

 

0695b00000If6DFAAZ.png 

This method will allow you to reduce the number of components in your main job and will allow you divide the functionality across several Child Jobs.

 

Regards

 

Richard

BrijeshDwivedi
Contributor II
Contributor II
Author

HI @Richard Hall​ Thanks for your response yes we understand the approach you referred but our requirement is again to have multiple jobs (containing more than one tRESTRequest) and to push in a Single Container.

Anonymous
Not applicable

A single Job cannot have more than one tRESTRequest component I am afraid.

 

Unfortunately there is no "single click" method of putting multiple services into a single container. However, if I were to attempt this, I would add a volume to a container and add the Jars generated when you build your services into this volume. I would then look at using an initialisation script to start these services when the container is launched. I am sure that this will be possible, but it will probably require a bit of experimentation to get this working.

BrijeshDwivedi
Contributor II
Contributor II
Author

Thanks @Richard Hall​ I went through few of the prospects but still I dont have a feasible solution can we please have a call to discuss over it.

 

Anonymous
Not applicable

Hi @Brijesh Kumar​,

 

I have contacted your organisation's CSM to see if they can give you some pointers on this.

 

Regards

 

Richard