If we are working with some different messages, each one for different workers, and we send, for example, two different messages for two different workers, the broker get freeze because it puts last received worker as 'waiting worker' in wrong the wrong list.
An example:
2 workers: one for service "MSR" and one for service "KEYLOCK".
2 requests: first for service "KEYLOCK" and then for service "MSR".
Worker "MSR" is waiting for card to be swiped.
Worker "KEYLOCK" returns with readed data.
Broker puts worker "KEYLOCK" as "waiting" state, but here is the problem. The last "service name" the broker has stored is "MSR", so it puts the worker as "waiting" in the list of "MSR" workers...
Now we try to send a new message for worker "KEYLOCK", but we haven't any worker available!
If we are working with some different messages, each one for different workers, and we send, for example, two different messages for two different workers, the broker get freeze because it puts last received worker as 'waiting worker' in wrong the wrong list.
An example: