推拉模式,push傳送,send。pull方接收,recv。push可以和多個pull建立連線,push傳送的資料被順序傳送給pull方。比如你push和三個pull建立連線,分別是a,b,c。push傳送的第一資料會給a,第二資料會給b,第三個資料給c,第四個資料給a。一直這麼迴圈。
推拉模式可分為三層,最上是產生任務的 分發者 ventilator,中間是執行者 worker,下面是收集結果的接收者 sink。
ventilator.cpp
#include
#include
#include
#include
#include
#include
#include
#include
intmain
(void
)zmq_close
(sender)
;zmq_ctx_destroy
(context)
;return0;
}
work.cpp
#include
#include
#include
#include
#include
intmain
(void
)printf
("buffer:%s\n"
,buffer)
;const
char
* replymsg =
"world"
;zmq_send
(sender, replymsg,
strlen
(replymsg),0
);//printf
("[server] sended reply message content == \"%s\"\n"
, replymsg);}
zmq_close
(recviver)
;zmq_close
(sender)
;zmq_ctx_destroy
(context)
;return0;
}
sink.cpp
#include
#include
#include
#include
#include
intmain
(void
)printf
("buffer:%s\n"
,buffer);}
zmq_close
(socket)
;zmq_ctx_destroy
(context)
;return0;
}
推拉模式與觀察者模式
最近做乙個訊息系統,其中涉及到新訊息數的即時更新,當時就想到了觀察者模式,後來聽同事提到推拉模式,感覺推模式原理上應該還是屬於觀察者模式,只不過把server變成了被觀察物件,client被動觀察 其實推拉模式我們經常遇到,如廣播 推 http請求 拉 只是沒有刻意去追求概念。設計時還是應該多考慮到...
RocketMQ訊息消費方式 推拉模式
rocketmq訊息消費本質上是基於的拉 pull 模式,consumer主動向訊息伺服器broker拉取訊息。consumer被分為2類 mqpullconsumer和mqpushconsumer,其實本質都是拉模式 pull 即consumer輪詢從broker拉取訊息。區別 mqpushcon...
RocketMQ訊息消費方式 推拉模式
rocketmq訊息消費本質上是基於的拉 pull 模式,consumer主動向訊息伺服器broker拉取訊息。consumer被分為2類 mqpullconsumer和mqpushconsumer,其實本質都是拉模式 pull 即consumer輪詢從broker拉取訊息。區別 mqpushcon...