I am developing a solution in Java which communicates with a set of devices through REST APIs which belongs to different vendors. So for each vendor, there are a set of processes that I have to perform inside my solution. However, these processes will be changed according to each vendor. Following are the high-level processes that need to be performed.
- Retrieve an XML file from a folder
- Process the XML file
- Perform some image processing
- Schedule a job and execute it on the scheduled time
- Storing data on a MySQL DB and perform some REST calls to outside APIs
So for one vendor might have all of the above processes. But for another, might not have some processes (Eg: Image processing). Following things should be able to obtain from the selected solution.
- I should be able to create custom workflows for new vendors
- Need to identify any failures that have been occurred within the workflow and perform retry mechanisms.
- Should be able to execute some functions parallelly (Eg: Image processing)
- Scalable
- Opensource
So I was told to look into workflow managers like Nifi/Airflow/Falcon. I did some research on them but couldn't finalize the most suitable solution.
NOTE: There is NO requirement to use Hadoop or any other cluster and data flow frequency is not that high
Currently, I am thinking of using Nifi. What would be the best solution for my use case?