(use zmq srfi-18) (define wx (make-socket 'sub)) (define vent (make-socket 'pull)) (socket-option-set! wx 'subscribe "60047 ") (connect-socket wx "tcp://localhost:5556") (connect-socket vent "tcp://localhost:5557") (define twx (make-thread (lambda () (let loop () (print "received weather msg: " (receive-message* wx)) (loop))))) (define tvent (make-thread (lambda () (receive-message* vent) ;; sync with start of batch (let loop () (let ((msg (receive-message* vent))) (print "received worker msg: " msg) (thread-sleep! (/ (string->number msg) 1000)) (loop)))))) (thread-start! twx) (thread-start! tvent) (thread-join! twx) (thread-join! tvent) #| received weather msg: 60047 7 51 received weather msg: 60047 109 54 received weather msg: 60047 25 56 received weather msg: 60047 100 42 received weather msg: 60047 60 11 received worker msg: 35 received worker msg: 35 received worker msg: 63 received worker msg: 39 received worker msg: 48 received worker msg: 75 received worker msg: 91 received weather msg: 60047 91 52 received weather msg: 60047 115 54 received worker msg: 4 received worker msg: 37 received worker msg: 68 received worker msg: 59 received worker msg: 84 ... |#