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 folderProcess the XML filePerform some image processingSchedule a job and execute it on the scheduled timeStoring 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 vendorsNeed 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)ScalableOpensource
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. But can anyone please give your opinion on that? What would be the best solution for my use case?