2

OldSoundRabbitMqBundleを使用して RabbitMQ コンシューマーを実行する Symfony 3.1.x プロジェクトを含む RabbitMQ コンテナーと PHP 7 コンテナーがあります。

testコンシューマーを実行するこのコマンドを実行すると、次のようになります。

bin/console rabbitmq:consumer -w test

次のエラーが表示されます。

[PhpAmqpLib\Exception\AMQPIOException]

データの読み取りエラー。予想される 7 バイトではなく 0 を受信しました

私のセットアップは非常に簡単で、次のことを確認しました。

  • RabbitMQ は最新バージョン (3.6.5) です
  • 構成されたhost、、、vhostパラメータuserpassword正しい
  • mbstring拡張機能が有効になっています

問題を再現するプロジェクトを設定するのは非常に簡単です。

サンプル プロジェクトは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

誰かが私の問題について何か考えがありますか?

4

1 に答える 1

3

答えは実に明快でした。私はこれを変更する必要がありましたconfig.yml

old_sound_rabbit_mq:
    connections:
        default:
            # ...

            use_socket: true

に:

old_sound_rabbit_mq:
    connections:
        default:
            # ...

            use_socket: false

falseがデフォルト値であることに注意してください。

于 2016-09-22T16:20:37.807 に答える