If the described message throughput is 10 messages per second and each message takes 1.5 seconds to process the process list for the message, you must consider several factors. For example, from the first process log statement "Running process: XYZ" to the last log statement "Finished processing successfully." it takes 1.5 seconds. Then, MaxWorkers = 10 * 1.5 which is 15, so 15 processing threads can generate 10 messages per second, each message takes 1.5 seconds, given that there is no other overhead. Since there always is some overhead, the recommendation would be 17-20 threads.