Currently the pullservice uses 3 way protocol when communicating with a client (like JD). Its GET, ACK, and END. Each requires a round trip from a pullservice to the client and back.
It would be more efficient to remove the ACK, call GET once (to get initial task) and just keep calling END which would do two things:
Convey end of task (success or failure)
Return new task to process
The ACK was a carry over from the time when JMS (ActiveMQ) was used as transport and it occasionally was loosing tasks. Its main function was to indicate which service (and thread) was processing the task. HTTP seems more robust and the ACK is no longer necessary.
To support the new protocol, JD needs refactoring to stop relying on ACK and also to fetch a new task (or null) in response to END.