【发布时间】:2019-01-14 04:23:09
【问题描述】:
如果我能在以下问题上获得任何帮助,我将不胜感激。
我已将 Symfony Messenger 设置为使用 AMQP 和 RabbitMQ。我可以在我的项目中发送消息并使用 AMQPConnection。
但是当我尝试使用消息时,我得到以下信息:
$ php bin/console messenger:consume-messages amqp 尝试从全局命名空间加载类“AMQPConnection”。 您是否忘记了“PhpAmqpLib\Connection\AMQPConnection”的“使用”语句?控制台命令调用AmqpFactory.php内的方法
所以当我从浏览器运行项目时,一切正常。我可以使用 AMQPConnection 和所有。但是从终端运行时,找不到 AMQPConnection 类。
在我的 composer.json 中,我还安装了 amqplib
"php-amqplib/php-amqplib": "^2.7",我使用 Docker,Dockerfile 包含:
来自 php:7-apache 运行 usermod -u 1000 www-data &&\ a2dissite 000-默认 &&\ apt-get 更新 &&\ apt-get 安装 -y \ zlib1g-开发\ libicu开发者\ 克++\ libfreetype6-开发\ libssh-开发\ libjpeg62-turbo-dev \ libmcrypt-开发\ librabbitmq-开发\ libpng-开发 &&\ docker-php-ext-configure 国际 &&\ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ &&\ docker-php-ext-install -j$(nproc) gd pdo_mysql intl opcache zip pcntl exif bcmath sockets &&\ a2enmod 重写 运行 pecl 安装 amqp \ && docker-php-ext-启用 amqp 复制 docker/apache2.conf /etc/apache2/apache2.conf 工作目录 /var/www/project更新! 我已经打印了 phpinfo() 并且在发送消息时我有版本 7.2.8 并且在执行终端命令时我有 7.2.7。所以终端在执行命令时没有使用PHP的Docker实例。
【问题讨论】:
-
您是否忘记了“PhpAmqpLib\Connection\AMQPConnection”的“使用”语句?
-
错过了添加该部分。更新了上面的问题。控制台命令使用此方法:return new \AMQPConnection($credentials);。它可以创建消息,但不能使用它。区别在于消费时我使用 Symfony 控制台命令。
-
但是你的控制台命令代码中有 use 语句吗?可以添加Command类的相关代码吗?
-
@JeroenI 添加了使用 AMQPConnection 的语句。真的很奇怪,创建消息时使用了相同的方法,效果很好。使用终端并激活命令以实际使用时,出现此错误。传递给连接的凭据也是正确的
标签: php symfony docker rabbitmq amqp