2012-03-20 29 views
2

就在ZeroMQ documentation的REP插座,它說:ZeroMQ REQ-REP:檢查回覆通過

如果原始請求不存在任何更多的答覆丟棄。

在我的項目中,我想知道做出原始請求的實體不再存在並正在偵聽答覆。換句話說,如果回覆將被丟棄,我想要拋出一個錯誤。

這樣的事情是可能的嗎?或者我必須使用一些單獨的頻道來檢查請求者或收到答覆時的某種ACK嗎?

回答

1

您應該使用單獨的通道來跟蹤請求者,因爲zmq套接字無法知道這一點。

爲了達到這個目的,您可以使用請求/回覆套接字,但可能會遇到性能問題,因爲固有地,您在做出回覆之前會做出另一個請求/回覆。

Entity1     Entity2 
Request -------------- Reply 
Reply -------------- Request 

和通信流量將

Entity1 --------> request -----> Entity2 
Entity1 <------- request <----- Entity2 
Entity1 -------- reply ------> Entity2 
Entity1 <------- reply ------- Entity2 

這現在的方式提供保證ENTITY1不會是可用於接收的答覆,但提高了它的可能性。

不管怎樣,將請求者狀態請求回覆者可能不是一個好主意。