国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

Channel/Client的publish過程是阻塞方式嗎?

笑天

現(xiàn)在一個業(yè)務(wù)模型如下:
worker0:創(chuàng)建httpWorker, 地址:127.0.0.1:1188
創(chuàng)建進(jìn)程Server
worker1:onWorkerStart回調(diào)中異步請求httpWorker, 在異步請求中的onClose方法中調(diào)用Worker::stopAll無限重啟進(jìn)程直到連接上httpWorker;
在worker1中的onWorkerStart回調(diào)中注冊channel/client方法A,
worker2:onMessage方法回調(diào)發(fā)布方法A;

我想問下, 如果worker1處于無限重啟中, worker2發(fā)布的方法A以及數(shù)據(jù)會被同時注銷嗎?
或者請教有沒有更好的辦法,使得如果worker1在無法請求到httpWorker的時候,能實worker2發(fā)布的數(shù)據(jù)阻塞直到連接上httpWorker

3529 1 0
1個回答

walkor 打賞

worker間通訊直接用channel就行了,不明白為什么還要在worker1中http異步連接worker0。

如果非要在worker1中http異步去連,可以在worker1->onWorkerStart時設(shè)置定時器,延遲去連就好了。

channel訂閱和發(fā)布都是異步非阻塞的

  • 笑天 2016-05-01

    因為worker0跟worker1之間是2臺不同的機器, 如果相互訂閱部署起來太麻煩了.而且worker0是多進(jìn)程運行的, 好像訂閱數(shù)據(jù)在多進(jìn)程下是同時多個訂閱的.如果channel能做到多進(jìn)程輪詢訂閱就完美了, 可以使用在容易阻塞的worker進(jìn)程中.

  • walkor 2016-05-01

    多臺服務(wù)器和單臺服務(wù)器使用channel沒有區(qū)別,既然已經(jīng)部署了channel,直接就可以用了,更沒有相互訂閱部署麻煩一說。不懂你說的多進(jìn)程輪詢訂閱是什么意思。

  • 笑天 2016-05-02

    @1:多進(jìn)程輪詢訂閱就是 一個worker是幾十個進(jìn)程, 該worker有channel訂閱, 目前是發(fā)布一次任務(wù) 該worker是全部執(zhí)行一次,我想不知道能不能做到想java一樣那種多線程調(diào)用發(fā)布任務(wù)

  • 笑天 2016-05-02

    @1:或者使用類似gateway的路由功能那樣.隨機模式也行呀

  • 笑天 2016-05-02

    @1:不好意思,我是個php初學(xué)者,說的不清楚. 上面說的就是channel::on注冊的時候能設(shè)置類似gateway的路由功能嗎,因為其實很多業(yè)務(wù)場景也需要這樣, channel::on是注冊在y一個多進(jìn)程數(shù)的worker下, 其他worker進(jìn)程發(fā)布任務(wù)的時候, channel訂閱是被隨機訂閱的,或者搶占訂閱,讓多進(jìn)程數(shù)的worker下能因為一個進(jìn)程被阻塞了其他進(jìn)程能訂閱這個事件

  • walkor 2016-05-02

    不用那么麻煩,可以讓每個進(jìn)程監(jiān)聽自己獨有的事件,例如監(jiān)聽的事件為"A.$worker->id",也就是方法A加當(dāng)前進(jìn)程編號作為事件名,發(fā)布者發(fā)布事件的時候選擇一個進(jìn)程編號發(fā)布事件即可

年代過于久遠(yuǎn),無法發(fā)表回答
??