【问题标题】:"Error reading data" while executing a RabbitMQ consumer in Symfony在 Symfony 中执行 RabbitMQ 消费者时出现“读取数据错误”
【发布时间】: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)
  • 配置的hostvhostuserpassword参数正确
  • 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.phpStreamIO.php?
  • 你在test_consumer做什么?
  • @Yonel 异常来自SocketIO.php

标签: docker rabbitmq symfony php-amqplib


【解决方案1】:

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

old_sound_rabbit_mq:
    connections:
        default:
            # ...

            use_socket: true

到:

old_sound_rabbit_mq:
    connections:
        default:
            # ...

            use_socket: false

注意false 是默认值。

【讨论】:

  • 太棒了!此参数取决于用于新连接的连接工厂类 (+1)
  • 是的,完全正确。感谢您的帮助@Yonel。
  • 在没有套接字的情况下就像一个魅力!但是如何使它与套接字一起工作?我已经为 php 安装了 sockets 扩展,但还是没有用。
猜你喜欢
  • 1970-01-01
  • 2018-09-22
  • 2021-11-26
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
相关资源
最近更新 更多