Using Spring TaskExecutor to launch background task instead of directly
using threads
Better visibility into state changes of the job in the UI