2016-09-22 2 views
2

OldSoundRabbitMqBundle을 사용하여 RabbitMQ 소비자를 실행하는 Symfony 3.1.x 프로젝트가있는 RabbitMQ 컨테이너와 PHP 7 컨테이너가 있습니다.Symfony에서 RabbitMQ 소비자를 실행하는 중에 "데이터 읽기 오류"가 발생했습니다

test 소비자 실행이 명령을 실행하는 경우 : 나는 다음과 같은 오류가

bin/console rabbitmq:consumer -w test 

을 :

[PhpAmqpLib\Exception\AMQPIOException]

Error reading data. Received 0 instead of expected 7 bytes

내 설치가 매우 간단하고 난 다음 사항 확인 :

  • RabbitMQ의 최신 버전은 (3.6.5)
  • 입니다. (210)
  • hostvhost는, user는, password 매개 변수는
  • 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를 구현하는 매우 간단한 클래스입니다 인터페이스.

누군가 내 문제와 관련하여 어떤 생각을 갖고 있습니까?

+0

이것은 보류중인 메시지없이 발생합니다. – yceruto

+0

@Yonel 예, 대기중인 메시지가 없어도 발생합니다. 나는 RabbitMQ 측면에서 어떤 오류도 보지 못했다. –

+0

예외는'SocketIO.php' 또는'StreamIO.php'에서 온 것입니까? – yceruto

답변

2

대답은 정말 간단했습니다. 내 config.yml에서 변경할했다 :

old_sound_rabbit_mq: 
    connections: 
     default: 
      # ... 

      use_socket: true 

에 : false가 기본값입니다

old_sound_rabbit_mq: 
    connections: 
     default: 
      # ... 

      use_socket: false 

하는 것으로.

+1

좋아요!이 매개 변수는 새 연결에 사용되는 연결 팩토리 클래스에 따라 다릅니다 (+1) – yceruto

+0

예. 귀하의 도움에 감사드립니다 @ Yonel. –

관련 문제