In the typical filter or handler pattern we have set of data and filters/handlers. We are filtering the available data set using available filters. These filters may have some dependencies(In business case this could be the sequence dependency or data dependency) like filter 2 depends on filter 1 and some filters does not have dependency with others. With the existing approach, some time consuming filters are designed to use several threads to process the received records parallely to improve the performance. However we are executing each filter one after another. Even Though we are using multiple threads for high time consuming filters, we need to wait until all the record finish to execute the next filter. Sometimes we need to populate some data from database for filters but with the existing architecture we need to wait until the relevant filter is executed. We can improve this by using non blocking approach as much as possible. Following diagram shows the ...