Which is the best Formal Communication Pattern to use? None...
Dear Ann,
with all due respect, nobody would try to seriously answer a question which of all the possible phone numbers is the best for any kind of use.
Why? There is simply no Swiss-Army-Knife for doing just anything.
That is surprisingly the good news.
As a system designer one may create The Right Solution on a green-field, using the just-enough design strategies for not doing more than necessary ( overhead-wise ) and have all the pluses on your design side ( scaleability-wise, low-latency-wise, memory-footprint-wise, etc. )
If no other requirements than (1) and (2) above appear,
a light-weight scheme
like this may work fine as an MVP "just-enough" design:
If userSystem
does not process anything depending on a schedulerSystem
output value, a PUSH-PULL
might be an option for sending a job, with possible extensions.
For userSystem
receiving independent, asynchronously organised state-reporting messages about respective jobID
return code
(s), again a receiver side poll-ed PUSH-PULL
might work well.
Why? Otherwise natural unstructured behaviour-wise PAIR-PAIR
disallows your processing from growing in scale once performance or architecture or both demand to move. PAIR-PAIR
does not allow your communication framework to join more entities together, while others do and your processing power may go distributed until your IP-visibility and end-to-end latency permit.
The real world is typically much more complex
Just one picture, Fig.60 from the below-mentioned book:

The best next step?
To see a bigger picture on this subject >>> with more arguments, a simple signalling-plane picture and a direct link to a must-read book from Pieter HINTJENS.