In a spring application I want do some background computing. The task is that I save an entity( lets say a GPS coordinate) and then I want to query a web service to get distance between all the coordinates and store them in the db for later use. There is a possibility that after storing the entity, connection cannot be made to the web service which will be used for calculation of the distances.
I think that this can be accomplished with introducing a job in the system (some thing like a cron job). Once we want some thing to happen in the background we put it in a job queue. The queue will try to execute the first job it receives, A job will go and connect to the web service, if for some reason it fails, it stays in the queue and tells the queue that it failed. The queue can then execute after a specified time for retry.. When it's successfully a job complete it is taken out of the job queue.
I am clear on the requirements, but I am not sure which technology to use. JMX, JMS, Spring Task Scheduler, Spring Integration, mix/match or all.
This seems similar to http://stackoverflow.com/questions/1939229/how-to-create-background-process-in-spring-webapp but not entirely
Edit Let's add to it a bit further. There is also a possibility of additions of those GPS coordinates in bulk (via a CSV file) for each CSV file every entry will be processed in file (the order will be for first come first serve file and for each entry). Deletions case can be simpler as nothing is expected to be deleted (but can be deatl with later)