Neev,
Welcome to JavaRanch!
Two requirements jump out at me.
Now we need to inform user synchronously in case validation is complete within one minute (say if a request contain 100 rows or records, we inform user synchronously)
because validation takes few seconds to few minutes.
If validation could take a few minutes, this means you can't rely on doing a validation and replying within one minute. Why does it take so long to do a validation? Is there a way to make it faster? For example, have the process write a row to a "done" table and query that. This table could have a status of "success" or "valiation failed" to tell them apart. If you can get validation down to a couple seconds, you will be able to query for validation synchronously. Which will greatly simplify your design for validation along with getting unneeded (and redundant) work out of the picture.
The other part is figuring out whether to do the actual work synchronously or asynchronously. Is it possible to determine whether a request is big or small before starting it? Maybe from the size of the request?