【workbunny/webman-rabbitmq 】 报错

timeless-zyg

问题描述

错误信息 Bunny\Exception\ClientException: Could not write data to socket.
如果在队列里面接收消息之后 接着业务处理 就会有这种情况出现(不是必现)

如果把业务处理代码注释掉 就不会出现这种情况

526 1 0
1个回答

chaz6chez

请检查业务是否阻塞时长过长导致心跳发送失败从而连接被server踢掉,或者业务内有主动断开客户端连接的逻辑。

  • timeless-zyg 2023-08-04

    应该是处理业务时间过长

  • chaz6chez 2023-08-04

    php是单线程的,心跳和消费都在一个线程上执行,当消费阻塞超过了心跳间隔就会导致心跳无法正常触发,这时候可以尝试对当前队列修改调整心跳间隔,或者配置队列服务心跳相关的配置,最好是对业务部分进行一些处理,将一些过于耗时的地方进行优化

  • chaz6chez 2023-08-04

    2.0版本现在要做的就是尝试处理这个问题,这段时间比较忙,一直都还没有什么进度

  • timeless-zyg 2023-08-04

    辛苦了 大佬

  • chaz6chez 2023-08-04

    之前因为工作原因更多的使用的是rabbitmq,现在也因为工作原因,更多的使用redis-stream;有机会你也可以尝试一下https://www.workerman.net/plugin/69这个插件

  • chaz6chez 2023-08-04

    如果使用rabbitmq的话,除了heartbeat需要进行调整外,timeout也需要调整,具体的可以参看rabbitmq文档中对这两个参数的解释

🔝