3

ソケット接続のタイムアウト エラーが発生しています。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";
     }
 }  
4

0 に答える 0