I have various types of tasks, each task involves the following –
- Use an XyzAPIProvider to query and obtain a payload
- convert the payload into a list of XyzDTOs (ModelMapper)
- convert the list of DTOs into list of entities (XyzDto2EntityConverter)
- store the entities into database using JPA repository (XyzRepository)
I plan to use Java’s ExecutorService to run the task in its own thread.
Each Task will implement Runnable and override the run method.
I want a particular task to be instantiated and queued to executorService depending upon the task type my application gets from a job queue.
I want to understand what is the correct design pattern applicable here? With my limited knowledge, I see some kind of TaskFactory which takes in a job type and returns instance of a given task. But within that TaskFactory, I see the factory method having lots of if then else. Is there a better way? Does java 8 provides any constructs for this use case?