Длительное соединение Rabbitmq в php (режим демона) под docker - PullRequest
0 голосов
/ 25 марта 2020

Предварительные требования:

клиентская библиотека: https://github.com/php-amqplib/php-amqplib/tree/v2.11.1

PHP dockerfile: FROM php: 7.1-alpine3 .9

PHP работает в режиме демона (что не является естественным способом). Роль этого сервиса - получение сообщений от брокера Rabbitmq. RabbitMQ и служба php работают в режиме docker.

Сеть: оверлей

Сведения о соединении:

$this->connection = new AMQPStreamConnection(
            getenv('DOCKER_HOST_RABBITMQ'),
            getenv('RABBITMQ_PORT'),
            getenv('RABBITMQ_DEFAULT_USER'),
            getenv('RABBITMQ_DEFAULT_PASS'),
            $vhost = '/',
            $insist = false,
            $login_method = 'AMQPLAIN',
            $login_response = null,
            $locale = 'en_US',
            $connection_timeout = 5,
            $read_write_timeout = 3600,
            $context = null,
            $keepalive = false,
            $heartbeat = 1800,
            $channel_rpc_timeout = 0.0,
            $ssl_protocol = null
        );

Проблема:

Через некоторое время я получил такие ошибки, как:

  • Сломанная труба
  • Пропущенное сердцебиение
  • Сброс соединения по пиру

Может ли это быть связано с docker сетью и нужно ли мне использовать endpoint_mode: dnsrr?

Заранее спасибо!

...