1.在swoole中,如果處理耗時等類似業(yè)務(wù),可以將任務(wù)放入隊列或者扔給taskWorker執(zhí)行
2.在webman中,如果想執(zhí)行類似業(yè)務(wù),應(yīng)該如何操作呢?
3.如果交給自定義進(jìn)程,應(yīng)該如何操作呢?
4.另外,關(guān)于自定義進(jìn)程,監(jiān)聽和非監(jiān)聽,在應(yīng)用上,有什么區(qū)別嗎,比如應(yīng)用場景?
webman 提供了redis隊列,可以處理異步任務(wù)。http://m.wtbis.cn/doc/webman#/queue/redis
任務(wù)交給自定義進(jìn)程可以參考這個 https://wenda.workerman.net/question/6057
自定義進(jìn)程監(jiān)聽和非監(jiān)聽區(qū)別就是字面意思,一個帶監(jiān)聽,一個不帶。當(dāng)進(jìn)程不需要外部主動傳遞信息時,可以不用監(jiān)聽,比如一些定時任務(wù)。
workor大·· webman里面如果想用 您的異步http client。實現(xiàn)一個類似代理那樣的功能,但是controller里面不是需要同步返回一個Response麼? 這個有什么好辦法麼?
這里可以推薦一下你去看一下I/O模型,通常來說有blocking IO、async IO、non-blocking IO;
粗俗的講
這里面的taskWoker在我理解,實際上和消息隊列或者自定義進(jìn)程沒有區(qū)別,使用的還是AIO的思想。
這里您指的耗時任務(wù)還需要明確一個點,就是當(dāng)前進(jìn)程是否在意其執(zhí)行結(jié)果,是否需要等待收集,如果需要阻塞等待收集其結(jié)果,最簡單的辦法就是循環(huán)監(jiān)聽,直到收集到且跳出循環(huán),并返回;這一點實際上和golang和swoole的協(xié)程的waitGroup是一個道理;進(jìn)程間可以結(jié)合信號量監(jiān)聽pipe/file等、線程間可以監(jiān)聽channel/競態(tài)的內(nèi)存。
如果不在意其執(zhí)行結(jié)果,或者不需要等待收集的話,市面上成熟的任務(wù)調(diào)度系統(tǒng)或者消息隊列是比較推薦的,自行實現(xiàn)自定義進(jìn)程通過rpc通訊也是可以的,使用成熟產(chǎn)品可以降低業(yè)務(wù)開發(fā)的心智負(fù)擔(dān)。