@tsvetval where are your “huge number” of messages being caught? Which event?
Based on your description, the diagram does not seem to work.
How about something like this
Use a business key or some process variable to represent your UUID. So when you receive messages at the Message Start Event, there is a UUID that you can link back with the process that is waiting for a completion message.
In the Check If X number of Messages have been Received Script task, this would be a query against the Runtime API (Java API) to do a count of the number of process instances running of the Message Start Event process with a process variable (or business key) they matches the UUID.
Other interesting angle is that this model would like you receive messages even before the top process is started.
If you changed the Receive Message Start Event to a none Start Event and look at: Limit number of concurrently running instances of a process definition - #4 by StephenOTT, you could make it so that the Receive Message Process wont accept “messages” until the parent process has been started with the UUID that is found in the message.