-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow dependent steps to start concurrently #2044
Comments
Giovanni Dall'Oglio Risso commented Excuse me, but this issue seems very similar to #2065. IMHO you can think at something like "spring integration channels", between two steps
There are some things to clarify (eg: how is managed the restart? How manage different chunk sizes?), but this way can be feasible. At the moment, to save IO time, we overloaded one step:
Obviously: this solution help to save IO time, but makes the things harder to understand and change. And this is a bad thing. More: this solution mantains the operations single-thread-sequential. Your solution (a pipeline) is ways better: enable the developers to save IO time, design a cleaner jobs, and allow the processes to be broken into different threads (one for chunk). |
Dave Syer commented Yes, I agree this is basically a duplicate. |
Mahmoud Ben Hassine commented I implemented a POC here for concurrent steps using a blocking queue as a staging area. It is typically an implementation of the producer/consumer pattern. However, I don't see (yet) how this could be provided as a built-in feature in the framework. If the POC makes sense, I would add it as a sample to the samples module rather than implement it as a feature in the framework (other than probably adding the Any thoughts? |
Resolves spring-projects#2350 Resolves spring-projects#2044 Signed-off-by: Fabrice Bibonne <[email protected]>
Dave Syer opened BATCH-1538 and commented
Allow dependent steps to start concurrently: step1 can be producing data that are needed in step2, e.g. staging records, and step2 can start to process those as soon as they are available without waiting. All that is needed is a protocol for the steps to agree on whether a dependency is finished or in flight. (In the staging case step1 is hardly ever a limiting factor in terms of execution time, but it might still help.)
1 votes, 3 watchers
The text was updated successfully, but these errors were encountered: