What should the functionality be for the following scenario?

;; Conceptually, assume push and pull sockets are different processes
(def ctx (zcontext 1))
(def ctx2 (zcontext 2))

(def push (-> (socket ctx :push)
              (connect "tcp://localhost:12345")))
(send push (.getBytes "msg1")) ;; true
(send push (.getBytes "msg2")) ;; true


(def pull (-> (socket ctx2 :pull)
              (bind "tcp://*:12345")))

;; receive queued messages as expected
(String. (recv pull)) "msg1"
(String. (recv pull)) "msg2"
(close pull) ;; simulate loss of connection

(send push (.getBytes "msg3"))
(send push (.getBytes "msg4"))
(send push (.getBytes "msg5"))

(def pull2 (-> (socket ctx2 :pull)
               (bind "tcp://*:12345")))

;; Again, received queued messages
(String. (recv pull2)) ;; "msg3"
(String. (recv pull2)) ;; "msg4"
(String. (recv pull2)) ;; "msg5"
(close pull2)

(send push (.getBytes "msg6")) ;; true
(send push (.getBytes "msg7")) ;; true
(send push (.getBytes "msg8")) ;; true

 ;; Simulate failover to a new endpoint
(disconnect push "tcp://localhost:12345")
(connect push "tcp://localhost:1337")

(send push (.getBytes "msg9")) ;; true
(def pull3 (-> (socket ctx2 :pull)
               (bind "tcp://*:1337")))

;; Expected to receive msg6-9
(String. (recv pull3)) ;; "msg9"

I expected the messages to be queued up and to receive msg6..9 but only
received msg9. Are messages 6-8 lost?

-Trev
_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to