2016-05-17 5 views
0

Ich benutze rabbitmq mit PhpAmqpLib Bibliothek für codeigniter und es funktioniert gut, aber ich arbeite an mehreren Maschinen in einer Maschine rabbitmq installiert ist und ein anderes ist es nicht und aus bestimmten Gründen ich möchte nicht rabbitmq installieren.Wie fatalen Fehler von rabbitmq nicht zu vermeiden

Ich erhalte Fehler:

Fatal error: abgefangene Ausnahme 'Error' mit der Meldung ‚stream_socket_client(): nicht in der Lage zu tcp verbinden: // localhost: 5672 (Es kann keine Verbindung sein gemacht, weil die Zielmaschine aktiv abgelehnt ) 'in F: \ xampp \ htdocs \ v010-commonsocialnetwork \ application \ dritte_party \ rabbitmq \ libraries \ vendor \ romainrg \ codeigniter-php-amqplib \ PhpAmqpLib \ Draht \ IO \ StreamIO.php: 130 Stack-Trace: # 0 [interne Funktion]: PhpAmqpLib \ Draht \ IO \ StreamIO- > error_handler (2, 'stream_socket_c ...', 'F: \ xampp \ htdocs ...', 130, Array) # 1 F: \ xampp \ htdocs \ v010-commonsocialnetwork \ application \ third_party \ rabbitmq \ libraries \ vendor \ romainrg \ codeigniter-php-amqplib \ PhpAmqpLib \ Draht \ IO \ StreamIO.php (130): stream_socket_client ('tcp: // localhost ...', 10061, 'Keine Verbindung c ... ', 3, 4, Ressourcen-ID # 127) # 2 F: \ xampp \ htdocs \ v010-commonssocialnetwork \ application \ dritte_party \ rabbitmq \ libraries \ vendor \ romainrg \ codeigniter-php-amqplib \ PhpAmqpLib \ Verbindung \ AbstractConnection.php (194): PhpAmqpLib \ Draht \ IO \ StreamIO- > connect() # 3 F: \ xampp \ htdocs \ v010-commonsocialnetwork \ a in F: \ xampp \ htdocs \ v010-commonsocialn etz \ application \ third_party \ rabbitmq \ Bibliotheken \ Anbieter \ romainrg \ codeigniter-php-amqplib \ PhpAmqpLib \ Draht \ IO \ StreamIO.php on line

Gibt es etwas, um dies zu vermeiden Error ? Hintergrundjob kann nicht hinzugefügt und auf diesem Computer ausgeführt werden, aber diesen Fehler zumindest nicht auslösen.

Vielen Dank im Voraus

Antwort

0

Arbeiten sollte mehr sein nicht geben fatalen Fehler fangen :)

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 
      } 
+0

bist du sicher, dass dies der Weg ist, es zu reparieren? – Gabriele

+0

nicht sicher, aber es funktioniert für mich jetzt, wenn ich eine bessere Option finde, werde ich definitiv damit gehen :) –

1

Sie brauchen nicht RabbitMQ in der anderen Maschine (n) zu installieren.

Aber müssen Sie die IP ändern Sie eine Verbindung aufbauen möchten:

tcp://localhost:5672 

mit versuchen

tcp://rabbitmq_ip_machine:5672 
+0

aber was ist, wenn ich auf Server bereitstellen muss ich IP für Server erneut ändern? –

+0

Nun, es kommt darauf an. Eine gute Übung ist die Verwendung eines Balancers. oder du kannst immer den "rabbitmq" -Server verwenden ip – Gabriele