Wie formatieren Sie Nachrichten am besten für Warteschlangen?

8

Ich habe in letzter Zeit Nachrichten gelesen und möchte ein einfaches, erweiterbares System für meine App implementieren. Obwohl es viele gute Informationen zum Thema MQ-System gibt, kann ich nicht viel über die tatsächliche Implementierung herausfinden.

Ich suche nach Mustern und Best Practices, um Nachrichten für eine Warteschlange richtig zu formatieren und um die Jobs in PHP auszuführen. Soll ich JSON, serialisierte Objekte, Text, URLs oder XML verwenden? Welche Informationen soll ich senden? Ist ein Arbeiter mit einer switch($job['command']) {} (oder so ähnlich) der Weg zu gehen, oder gibt es irgendwelche etablierten Muster, um einen Arbeiter zu implementieren?

Hilfe sehr geschätzt!

    
Tijmen 14.03.2010, 22:54
quelle

2 Antworten

8

Sie können jede der folgenden MQ-Implementierungen in PHP auswählen, sodass Sie keine eigenen MQ-Implementierungen erstellen müssen. Sie können sich ihren Quellcode ansehen, um mehr über ihre Implementierung zu erfahren. Zur allgemeinen Integration werfen Sie einen Blick auf die ActiveMQ-Seite zu Enterprise-Integrationsmustern .

  • Ссылка

      

    Eine PHP-Client-Bibliothek für beanstalkd. BeanStalk ermöglicht PHP-Entwicklern die Verwendung des BeanStalkd WorkQuee- Servers im Arbeitsspeicher ( Ссылка ).

  • Ссылка

      

    Beanstalk ist ein einfacher, schneller Workqueue-Service. Die Benutzeroberfläche ist generisch, wurde aber ursprünglich entwickelt, um die Latenz von Seitenaufrufen in Webanwendungen mit hohem Volumen zu reduzieren, indem zeitraubende Aufgaben asynchron ausgeführt werden.

  • Ссылка

      

    Apache ActiveMQ ist der populärste und leistungsfähigste Anbieter von Open-Source-Messaging- und Integrationsmustern. Apache ActiveMQ ist schnell, unterstützt viele Cross Language Clients und Protokolle, verfügt über einfach zu verwendende Enterprise Integration Patterns und viele erweiterte Funktionen und unterstützt JMS 1.1 und J2EE 1.4. Apache ActiveMQ wird unter der Apache 2.0-Lizenz veröffentlicht

  • Ссылка

      

    Memcachedb ist ein verteiltes Schlüsselwertspeichersystem, das für persistente Systeme entwickelt wurde. Es ist keine Cache-Lösung, sondern ein persistenter Speicher für das Schreiben und Lesen von Hochfrequenz. Es entspricht dem Memcache-Protokoll (nicht abgeschlossen, siehe unten), sodass jeder Memcached-Client eine Verbindung mit ihm haben kann. Memcachedb verwendet Berkeley DB als Speicher-Backend, so dass viele Funktionen einschließlich Transaktion und Replikation unterstützt werden.

  • Ссылка

      

    Zend Server 5.0 umfasst Job Queue, die vollständige Unterstützung für das Erstellen, Ausführen und Verwalten von Jobs bietet, um die Anwendungsleistung zu optimieren und die Serverbelastung zu reduzieren, Anwendungsengpässe zu minimieren und die Endbenutzererfahrung zu verbessern.

  • Ссылка

      

    doprr ist ein in PHP geschriebenes Framework für verteilte Nachrichtenwarteschlangen. Die Hauptziele sind:

         
    • zuverlässige und dauerhafte (ausfallsichere) -Nachrichten über Netzwerke
    •   
    • dezentrale Architektur ohne einzelne (Point of Failure) Serverinstanz
    •   
    • einfach einzurichten und zu verwenden
    •   
    • Modularität für Warteschlangenspeicher und Nachrichtentransport (derzeit sind Dateisystemspeicher und Curl-Upload implementiert)
    •   
  • Ссылка

      

    Gearman stellt ein generisches Anwendungsframework bereit, um die Arbeit an anderen Maschinen oder Prozessen durchzuführen, die für die Arbeit besser geeignet sind. Damit können Sie parallel arbeiten, Lastenausgleich durchführen und Funktionen zwischen Sprachen aufrufen.

  • Ссылка

      

    ØMQ (auch als ZeroMQ, 0MQ oder ZMQ bezeichnet) ist eine asynchrone Hochleistungs-Messaging-Bibliothek, die für den Einsatz in skalierbaren verteilten oder parallelen Anwendungen konzipiert ist. Es stellt eine Nachrichtenwarteschlange bereit, aber im Gegensatz zur nachrichtenorientierten Middleware kann ein ØMQ-System ohne dedizierten Nachrichtenbroker ausgeführt werden. Die Bibliothek ist so konzipiert, dass sie eine vertraute Socket-API besitzt.

Gordon 14.03.2010, 23:28
quelle
1

Ich würde JSON verwenden, wenn Sie können - es ist prägnant, leicht zu lesen und funktioniert sprachübergreifend.

Ein Grund, warum Sie JSON möglicherweise nicht verwenden können, ist, wenn Sie möchten, dass Ihr Hintergrund- "Job" nicht nur Daten enthält (in diesem Fall ist JSON in Ordnung), sondern ein serialisiertes Objekt. Wenn dies der Fall ist, müssen Sie mindestens eines der Argumente des Jobs serialisiert PHP machen.

    
mjs 18.03.2010 00:25
quelle

Tags und Links