在Symfony中执行RabbitMQ使用者时“读取数据时出错”

时间:2016-09-22 13:31:12

标签: docker rabbitmq symfony php-amqplib

我有一个RabbitMQ容器和一个带有Symfony 3.1.x项目的PHP 7容器,该项目使用OldSoundRabbitMqBundle执行RabbitMQ使用者。

运行执行test消费者的此命令时:

bin/console rabbitmq:consumer -w test

我收到以下错误:

  

[PhpAmqpLib \异常\ AMQPIOException]

     

读取数据时出错。收到0而不是预期的7个字节

我的设置非常简单,我检查了以下内容:

  • RabbitMQ的最新版本为(3.6.5)
  • 已配置的hostvhostuserpassword参数正确
  • mbstring分机已启用

设置项目以重现问题非常容易。

示例项目为available on GitHub,并在README文件中提供说明,只需几步即可重现该问题。

以下是一些亮点:

搬运工-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接口的非常简单的类。

有人对我的问题有任何想法吗?

1 个答案:

答案 0 :(得分:2)

答案非常简单。我必须在我的config.yml中更改此内容:

old_sound_rabbit_mq:
    connections:
        default:
            # ...

            use_socket: true

为:

old_sound_rabbit_mq:
    connections:
        default:
            # ...

            use_socket: false

请注意,false是默认值。