You must estimate the amount of threads needed for the expected message throughput.
For example, if the message throughput is 10 messages per second, and each message takes 1.5 seconds to process the list for the message, several factors must be considered.
From the first process log statement, “Running process: XYZ” to the last log statement “Finished processing successfully.” It takes 1.5 seconds. After this, MaxWorkers = 10 * 1.5 which is 15, so 15 processing threads can generate 10 messages per second, each message takes 1.5 seconds provided, there is no other overhead. Since there is always some overhead, the recommendation would be 17-20 threads.