A complex example
#################
# Need to get # ############################## ###############
# things done # # Ventilator # # Worker #
#---------------# #----------------------------# #-------------#
# .----------. # # .---------. .---------. # .->#.----..-----.#---.
# | control | # # | control | | fan | # | #| in || out |# |
# |----------| # # |---------| |---------| # | #'----''-----'# |
# | REQ |-------->| ROUTER | | PUSH |----.-. ############### |
# | connect | # # | bind | | bind | # | | |
# '----------' # # '---------' '---------' # | | ############### |
# # # # | | # Worker # |
# # # # | | #-------------# |
################# # # | '->#.----..-----.#--.|
# .---------. # | #| in || out |# ||
# | sink | # | #'----''-----'# ||
# |---------| # | ############### ||
# | SUB | # | ||
# | bind | # | ############### ||
# '---------' # | # Worker # ||
# ^ # | #-------------# ||
###############|############## '--->#.----..-----.# -.|
| #| in || out |# ||
| #'----''-----'# ||
| ############### ||
'--------------------------------------'|
'--------------------------------------'|
'---------------------------------------'
ZeroMQ PUSH/PULL does fair queuing automatically