How to avoid fatal error of rabbitmq not installed
我正在将Rabbitmq与PhpAmqpLib库一起用于codeigniter,并且工作正常,但我在一台计算机上安装了多台计算机,而Rabbitmq已安装,而另一台却没有,并且由于某些原因,我不想在其上安装Rabbitmq。铅>
我遇到错误:
Fatal error: Uncaught exception 'ErrorException' with message 'stream_socket_client(): unable
to connect to tcp://localhost:5672 (No connection could be made because the target machine actively
refused it.
)' in F:\\xampp\\htdocs\\v010-commonsocialnetwork\\application\\third_party\
abbitmq\\libraries\\vendor\
omainrg
\\codeigniter-php-amqplib\\PhpAmqpLib\\Wire\\IO\\StreamIO.php:130
Stack trace:
#0 [internal function]: PhpAmqpLib\\Wire\\IO\\StreamIO->error_handler(2, 'stream_socket_c...', 'F:\\xampp
\\htdocs...', 130, Array)
#1 F:\\xampp\\htdocs\\v010-commonsocialnetwork\\application\\third_party\
abbitmq\\libraries\\vendor\
omainrg
\\codeigniter-php-amqplib\\PhpAmqpLib\\Wire\\IO\\StreamIO.php(130): stream_socket_client('tcp://localhost
...', 10061, 'No connection c...', 3, 4, Resource id #127)
#2 F:\\xampp\\htdocs\\v010-commonsocialnetwork\\application\\third_party\
abbitmq\\libraries\\vendor\
omainrg
\\codeigniter-php-amqplib\\PhpAmqpLib\\Connection\\AbstractConnection.php(194): PhpAmqpLib\\Wire\\IO\\StreamIO-
>connect()
#3 F:\\xampp\\htdocs\\v010-commonsocialnetwork\\a in F:\\xampp\\htdocs\\v010-commonsocialnetwork\\application
\\third_party\
abbitmq\\libraries\\vendor\
omainrg\\codeigniter-php-amqplib\\PhpAmqpLib\\Wire\\IO\\StreamIO.php
on line 130
有什么办法可以避免此错误?后台作业可能不会在该计算机上添加和执行,但至少不会引发此错误。
预先感谢
您不需要在其他计算机上安装RabbitMQ。
但是您必须更改要连接的IP:
1 | tcp://localhost:5672 |
应为
1 | tcp://rabbitmq_ip_machine:5672 |
使用try捕获其不再发出致命错误:)
1 2 3 4 5 6 7 8 | try { $CI->load->add_package_path(APPPATH . 'third_party/rabbitmq'); $CI->load->library('rabbit_mq'); $CI->load->remove_package_path(APPPATH . 'third_party/rabbitmq'); $CI->rabbit_mq->push('background_job', json_encode(array('method'=>'check_activity_visibility','data'=>array('ActivityGUID'=>get_detail_by_id($entity_id),'ENVIRONMENT'=>ENVIRONMENT))), TRUE, array('delivery_mode' => 2)); } catch(Exception $e) { // Do nothing } |