錯誤信息 Bunny\Exception\ClientException: Could not write data to socket.
如果在隊列里面接收消息之后 接著業(yè)務(wù)處理 就會有這種情況出現(xiàn)(不是必現(xiàn))
如果把業(yè)務(wù)處理代碼注釋掉 就不會出現(xiàn)這種情況
請檢查業(yè)務(wù)是否阻塞時長過長導(dǎo)致心跳發(fā)送失敗從而連接被server踢掉,或者業(yè)務(wù)內(nèi)有主動斷開客戶端連接的邏輯。
php是單線程的,心跳和消費都在一個線程上執(zhí)行,當(dāng)消費阻塞超過了心跳間隔就會導(dǎo)致心跳無法正常觸發(fā),這時候可以嘗試對當(dāng)前隊列修改調(diào)整心跳間隔,或者配置隊列服務(wù)心跳相關(guān)的配置,最好是對業(yè)務(wù)部分進行一些處理,將一些過于耗時的地方進行優(yōu)化
之前因為工作原因更多的使用的是rabbitmq,現(xiàn)在也因為工作原因,更多的使用redis-stream;有機會你也可以嘗試一下http://wtbis.cn/plugin/69這個插件
如果使用rabbitmq的話,除了heartbeat需要進行調(diào)整外,timeout也需要調(diào)整,具體的可以參看rabbitmq文檔中對這兩個參數(shù)的解釋