RabbitMQ中消费时,是不是能使用异步(如异步http)组件吗?

z985342160

例:

$channel->basic_qos(0, 5, false);
$channel->basic_consume('name', '', false, false, false, false, function(AMQPMessage $message) {
    echo 'Rec:', $message->getBody(), "\n";
    $http = new Http();
    $http->get('http://www.baidu.com', function($response) use ($message) {
        echo 'Resp:', $response->getBody(), "\n";
        $message->ack();
    });
});

目前发现在这样使用异步http组件,http一直没有响应(请求都没发送)。

https://wenda.workerman.net/question/6257

见walkor的回复:consume里是一个死循环,一直循环消费队列的数据。因为代码一直运行在这个循环里,workerman永远无法得到控制权,就无法把数据发送出去。

我本意是当设置消费者的prefetch_count后, 如何可以并发处理这些消息,而不是阻塞等待。

1842 1 0
1个回答

xiuwang

basic_consume 也是死循环阻塞的操作,所以无法使用异步http,用curl吧

  • 暂无评论
年代过于久远,无法发表回答
🔝