Fist of all thanks for your exhaustive answer

Ad b) Will definitely try that!

Ad c) I understand, will try to get the JobParameters included in the input message form JobExecution.

Ad a)
The files come in in irregular intervals, sometime bursts. The most important aspect for each file is the time it takes from submit to converting and sending back so aggregating (so waiting
for a queue to fill up) could cause the clients to wait needlessly in the queue. I would imagine the best way to do it, would be for the batch engine to have a queue, and try to utilize the resources concurrently and return the outcome into a blocking queue/channel to SI for sending the files back.

Here is an interesting thought: How to achieve a flow that does not need SI to utilize its own queue, so that it only polls the MQ when spring batch has a processing slot available? I see in your example, that the input channel is a direct channel, I presume it will block until the job is done?