Heim >Backend-Entwicklung >PHP-Problem >Wie implementieren Sie Nachrichtenwarteschlangen (Rabbitmq, Redis) in PHP?
Composer benötigt PHP-AMQPLIB/PHP-AMQPLIB
. 'Login' = & Gt; $ Channel = $ connection- & gt; Channel (); $ Channel- & gt; queue_declare ('my_queue', falsch, falsch, falsch, falsch); $ message = 'Hallo Welt!'; $ Channel- & gt; Basic_publish (neue amqpMessage ($ message), '', 'my_queue'); $ Channel- & gt; close (); $ connection- & gt; close (); // eine Nachricht empfangen $ connection = new amqpConnection (['host' = & gt; 'localhost', 'port' = & gt; 5672, 'login' = & gt; 'gäste', 'password' = & gt; 'guden', 'vhost' = & gt;/']; $ Channel = $ connection- & gt; Channel (); $ Channel- & gt; queue_declare ('my_queue', falsch, falsch, falsch, falsch); $ callback = function ($ msg) {echo & quot; [x] erhalten ", $ msg- & gt; body," \ n & quot ;; $ msg- & gt; lieferung_info ['kanal']-& gt; basic_ack ($ msg- & gt; lieferung_info ['lieferung_tag']); }; $ Channel- & gt; Basic_consume ('my_queue', '', falsch, falsch, falsch, falsch, $ callback); while (count ($ kanal- & gt; callbacks)) {$ kanal- & gt; wait (); } $ kanal- & gt; close (); $ connection- & gt; close (); Implementierung mit Redis:
Sie benötigen die predis/predis
Bibliothek. Installieren Sie es mit Composer: Composer benötigt Predis/Predis
. $ redis- & gt; rpush ('my_queue', 'Hallo Welt!'); // eine Nachricht empfangen $ message = $ redis- & gt; lpop ('my_queue'); if ($ message! == null) {echo & quot; [x] erhalten: & quot; . $ meldung. "\ n & quot ;; }
Feature | RabbitMQ | Redis | |
---|---|---|---|
Architecture | Distributed message broker, AMQP protocol | In-memory data store, simpler Queuing | |
Persistenz | Persistente Nachrichtenspeicher (konfigurierbar) | In-Memory, Daten verloren auf Server-Neustart (es sei denn Börsen, Nachrichtenpriorisierung, garantierte Lieferung | Einfachere Warteschlange, kein fortgeschrittenes Routing |
Skalierbarkeit | hoch skalierbar, hohe Nachrichtenvolumen | skalierbar, kann aber bei sehr hohen Einschränkungen bei sehr hohen Einschränkungen bei sehr hoher Meldung konfrontiert werden, können jedoch bei sehr hoher Einschränkungen bei sehr hoher Einschränkungen bei sehr hohen Nachrichten fassen. Durchsatz | |
Komplexität | komplexer zum Einrichten und Verwalten von | Eingerichteten und verwenden | |
Rabbitmq:
$ Channel- & Gt; bestätigen. Um die Atomizität des Nachrichtenverlags und andere Operationen zu gewährleisten. Dadurch wird sichergestellt, dass die Daten überleben Broker Neustarts. Dies ermöglicht Wiederholungsmechanismen und Überwachung fehlgeschlagener Nachrichten. Verwenden Sie negative Bestätigungen für die fehlgeschlagene Verarbeitung, um die Nachricht zu fordern. Dies ist entscheidend für eine zuverlässige Nachrichtenzustellung. Verarbeitung.
Das obige ist der detaillierte Inhalt vonWie implementieren Sie Nachrichtenwarteschlangen (Rabbitmq, Redis) in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!