【发布时间】:2016-09-22 13:31:11
【问题描述】:
我有一个 RabbitMQ 容器和一个带有 Symfony 3.1.x 项目的 PHP 7 容器,该项目使用 OldSoundRabbitMqBundle 执行 RabbitMQ 消费者。
当运行这个执行test消费者的命令时:
bin/console rabbitmq:consumer -w test
我收到以下错误:
[PhpAmqpLib\Exception\AMQPIOException]
读取数据时出错。收到 0 而不是预期的 7 个字节
我的设置非常简单,我检查了以下几点:
- RabbitMQ 是最新版本 (3.6.5)
- 配置的
host、vhost、user、password参数正确 -
mbstring扩展已启用
设置一个项目来重现问题真的很容易。
示例项目是available on GitHub,README 文件中提供了说明,只需几个步骤即可重现问题。
这里有一些亮点:
docker-compose.yml
version: '2'
services:
php:
build: ./docker/php/
links:
- rabbitmq
volumes:
- ./src:/var/www/rabbitmq-test
working_dir: /var/www/rabbitmq-test
rabbitmq:
image: rabbitmq:3.6-management
config.yml
old_sound_rabbit_mq:
connections:
default:
host: 'rabbitmq'
port: 5672
user: 'guest'
password: 'guest'
vhost: '/'
lazy: false
# ...
producers:
# ...
consumers:
test:
connection: default
exchange_options: {name: 'test', type: direct}
queue_options: {name: 'test'}
callback: test_consumer
test_consumer 服务是一个实现ConsumerInterface 接口的非常简单的类。
有人知道我的问题吗?
【问题讨论】:
-
在没有任何待处理消息的情况下发生这种情况?
-
@Yonel 是的,即使没有任何未决消息也会发生。我在 RabbitMQ 方面没有看到任何错误。
-
异常来自
SocketIO.php或StreamIO.php? -
你在
test_consumer做什么? -
@Yonel 异常来自
SocketIO.php。
标签: docker rabbitmq symfony php-amqplib