2010-03-14 7 views
8

Ich habe in der letzten Zeit die Message-Warteschlange gelesen und möchte ein einfaches, erweiterbares System für meine App implementieren. Während es viele gute Informationen zum Thema MQ-System gibt, kann ich nicht viel über die tatsächliche Implementierung herausfinden.Wie formatieren Sie Nachrichten am besten für Warteschlangen?

Ich bin auf der Suche nach Mustern und Best Practices zum Formatieren von Nachrichten für eine Warteschlange und Möglichkeiten zum Ausführen der Aufträge in PHP. Soll ich JSON, serialisierte Objekte, Text, URLs oder XML verwenden? Welche Informationen soll ich senden? Ist ein Arbeiter mit einer (oder so ähnlich) der Weg zu gehen, oder gibt es irgendwelche etablierten Muster da draußen, um einen Arbeiter zu implementieren?

Hilfe sehr geschätzt!

Antwort

8

Sie können eine 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 sich über deren Implementierung zu informieren. Für allgemeine Integration, werfen Sie einen Blick auf die ActiveMQ page on Enterprise Integration patterns.

  • http://sourceforge.net/projects/beanstalk/

    Ein PHP-Client-Bibliothek für beanstalkd. BeanStalk ermöglicht es PHP-Entwicklern, den beanstalkd In-Memory-Workqueue-Server (http://xph.us/software/beanstalkd) zu verwenden.

  • http://kr.github.com/beanstalkd/

    Bohnenstange 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.

  • http://activemq.apache.org/

    Apache ActiveMQ ist die beliebteste und leistungsfähige Open-Source-Messaging und Integration Patterns Anbieter. 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 vollständig. Apache ActiveMQ

    wird unter der Apache 2.0 License
  • http://memcachedb.org/memcacheq/

    memcachedb ist ein verteiltes Schlüsselwert-Speichersystem für persistente gestaltet. 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.

  • http://www.zend.com/en/products/server/

    Zend Server 5.0 beinhaltet Job Queue, volle Unterstützung für das Erstellen, Ausführen und Verwalten von Jobs Anwendungsleistung zu optimieren und die Serverlast zu reduzieren, Anwendung Engpässe zu minimieren und die Verbesserung der Endanwender-Erfahrung .

  • https://www.dropr.org/

    dropr ist eine Warteschlange Rahmen verteilt Nachricht in PHP geschrieben. Die Hauptziele sind:

    • zuverlässig und langlebig (Failsafe) -messaging über Netzwerke
    • dezentrale Architektur ohne einen einzigen (Point of Failure) Serverinstanz
    • einfach einzurichten und verwenden
    • Modularität für Warteschlange Lagerung und Nachrichtentransporte (derzeit Dateisystem Lagerung und curl-Upload durchgeführt werden)
  • http://gearman.org/

    Gearmman stellt ein generisches Anwendungsframework zur Verfügung, um andere Maschinen oder Prozesse, die für die Arbeit besser geeignet sind, mit Workouts auszustatten. Damit können Sie parallel arbeiten, Lastenausgleich durchführen und Funktionen zwischen Sprachen aufrufen.

  • http://www.zeromq.org/

    omq (auch ZeroMQ, 0MQ oder ZMQ Dinkel) ist ein Hochleistungs asynchrones Messaging-Bibliothek bei Gebrauch ausgerichtet in skalierbaren verteilten oder gleichzeitige Anwendungen. Es stellt eine Nachrichtenwarteschlange bereit, aber im Gegensatz zur nachrichtenorientierten Middleware kann ein ØMQ-System ohne dedizierten Nachrichtenbroker ausgeführt werden. Die Bibliothek wurde entwickelt, um eine vertraute API im Socket-Stil zu haben.

+0

Ich neigte dazu, entweder einfachen Text (für sehr einfache Nachrichten) oder Json zu verwenden. Für einen PHP-basierten BeanStalkd-Client würde ich auch Pheanstalkd empfehlen: https://github.com/pda/pheanstalk –

1

würde ich JSON verwenden, wenn Sie können - es ist prägnant, leicht zu lesen, und arbeitet Quer Sprache.

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.

Verwandte Themen