The manager-worker (use of the M-S term is advised against in all modern style guides) is not simple to do in MPI. You say you send the highest priority item to all MPI ranks. Do they all compute the same result or is the work distributed over them? First case is wasteful, second case is not really a manager-worker model and you might as well do it without the manager.
If you have a true manager-worker model, where each item is done by a single process, you should use non-blocking sends: the manager sends the top so many items to all available processes. Then it does MPI_Waitany for any process to finish, and that process gets the next item. Then the manager waits again.
You need to come up with some convention how to tell the workers that the whole queue is empty, because they can not see the actual queue. (Unless you use one-sided communication, but it doesn't sound like you're ready for that.)