ソケット接続のタイムアウト エラーが発生しています。php-amqplib の投稿が限られているためです。それを理解することはできません。
注:そのエラーをキャッチして再接続しようとしています。しかし、phpでそれを行う方法がわかりません。nodejs の _onError 行の何かが役立ちます。
次のエラーが表示されます。
PHP Fatal error: Uncaught exception 'PhpAmqpLib\Exception\AMQPTimeoutException' with message 'Error sending data. Socket connection timed out' in /home/users/yagneshm/rabbitmq-php/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php:194
Stack trace:
#0 /home/users/yagneshm/rabbitmq-php/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Connection/AbstractConnection.php(336): PhpAmqpLib\Wire\IO\StreamIO->write('\x01\x00\x01\x00\x00\x00\r\x00<\x00(\x00\x00\x00\x04...')
#1 /home/users/yagneshm/rabbitmq-php/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Connection/AbstractConnection.php(377): PhpAmqpLib\Connection\AbstractConnection->write('\x01\x00\x01\x00\x00\x00\r\x00<\x00(\x00\x00\x00\x04...')
#2 /home/users/yagneshm/rabbitmq-php/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Channel/AMQPChannel.php(1102): PhpAmqpLib\Connection\AbstractConnection->send_content(1, 60, 0, 15, '\xB9\x80\x10application/...', 'test no. 998539', Object(PhpAmqpLib\Wire\AMQPWriter))
#3 /home/users/yagneshm/rabbitmq-php/src/rmq.php(144): PhpAmqpLib\Channel\AMQ in /home/users/yagneshm/rabbitmq-php/vendor/videlalvaro/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php on line 194
次の接続機能を使用しています。
public function connect()
{
try
{
$this->connection = new AMQPStreamConnection($this->HOST, $this->PORT, $this->USER, $this->PASS, $this->VHOST, ['read_write_timeout' => 2 * $this->HEARTBEAT,'heartbeat'=> $this->HEARTBEAT]);
$this->channel = $this->connection->channel();
} catch (Exception $e) {
echo "log error";
}
}
そして、次の送信メッセージ:
public function send($queue, $message, $params)
{
try
{
$message = new AMQPMessage( $message, array( 'content_type' =>$contentType,
'delivery_mode' => $Persistent,
'expiration' => $Expiration,
'priority' => $Priority,
'message_id' => $messageId ));
$this->channel->basic_publish($message, $exchangeName, $queue);
} catch (Exception $e)
{
echo "log error";
}
}