Fatal error: Uncaught PhpAmqpLib\Exception\AMQPChannelClosedException: Channel connection is closed.

报错内容:

Fatal error: Uncaught PhpAmqpLib\Exception\AMQPChannelClosedException: Channel connection is closed. in/vendor/php-amqplib/php-amqplib/PhpAmqpLib/Channel/AbstractChannel.php:245


在hyperf中使用rabbitmq组件时,开发模式下启动服务,hyperf会将全局包都加入到composer缓存中,当每次修改消息队列配置时,需要重新更新下包关系

鼎云博客


解决办法:

1.切换到项目下执行

composer dump-autoload -o


原理:

这个命令的本质是将 PSR-4/PSR-0 的规则转化为了 classmap 的规则, 因为 classmap 中包含了所有类名与类文件路径的对应关系,所以加载器不再需要到文件系统中查找文件了。可以从 classmap 中直接找到类文件的路径。

注意事项:

建议开启 opcache , 这样会极大的加速类的加载。
php5.5 以后的版本中默认自带了 opcache 。

这个命令并没有考虑到当在 classmap 中找不到目标类时的情况,当加载器找不到目标类时,仍旧会根据PSR-4/PSR-0 的规则去文件系统中查找


2.修改文件类名和exchanges、queues绑定名称,这种情况暂不明确什么原因,但是遇到过类似情况!


鼎云博客
  • 最新评论
  • 总共0条评论