The problem I have is I have to 3 services from where I retrieve information that, all together, will allow me to build a specific Java class that I then need to send to another service (The class will be transformed into a JSON payload before being sent). All of the services are implemented using Spring and they communicate via Apache Kafka.
In order to better explain my problem, my aggregator process receives a request (Also from Apache Kafka) and proceeds to send a request to all the three services on the left (Service 1, 2 and 3). These services must then respond to the aggregator with their pieces of information (Information 1, 2 and 3) which the aggregator will collect so that he can then send everything to another service.
Now, my question is, I have searched that for this kind of ‘orchestration’ between services I should use a tool like AWS Step Functions, Apache Airflow or Camunda but upon trying to use Airflow I found it being quite complicated (Might be my perception since I have never worked with these types of orchestration tools) for what I intend to achieve so I was wanting to ask if, given the problem that I have, if something like Airflow, AWS Step Functions or Camunda is in fact the right tool to use or if I would be better off using other types of tools or libraries to implement the logic I just explained above.
Please have into consideration that all of the services (Information Aggregator included) are implemented using Spring and that all three pieces of information are required to build the “Aggregated Information”, if any service fails to respond then errors should be thrown and retries and timeouts should also be in place