FrameworkZend_Queue ist ein Proxy der die Details des Queue Services
versteckt. Die Queue Services werden durch
Zend_Queue_Adapter_<service> repräsentiert. Zum Beispiel ist
Zend_Queue_Adapter_Db eine Queue die Datenbanktabellen verwendet
um Nachrichten zu speichern und zu empfangen.
Anbei ist ein Beispiel für die Verwendung von Datenbanktabellen für ein Queueing System:
'queue1',
'driverOptions' => array(
'host' => '127.0.0.1',
'port' => '3306',
'username' => 'queue',
'password' => 'queue',
'dbname' => 'queue',
'type' => 'pdo_mysql'
)
);
// Erstellt eine Datenbank Queue.
// Zend_Queue fügt vorne Zend_Queue_Adapter_ an 'Db' für den Klassennamen an.
$queue = new Zend_Queue('Db', $options);
]]>
Der Constructor von Zend_Queue erstellt eine
Zend_Queue_Adapter_Db und initialisiert den Adapter mit den
Konfigurationseinstellungen.
Die akzeptierten Konfigurationseinstellungen für jeden Adapter sind in den
Adapter Notizen beschrieben.
Zend_Queue gibt Nachrichten zurück indem es die
Zend_Queue_Message_Iterator Klasse verwendet, welche eine
Implementation vom SPL Iterator und von
Countable ist.
Zend_Queue_Message_Iterator enthält ein Array von
Zend_Queue_Message Objekten.
receive(5);
foreach ($messages as $i => $message) {
echo "$i) Nachricht => ", $message->body, "\n";
}
]]>
Alle Exceptions die geworfen werden sind von der Klasse
Zend_Queue_Exception.
EinführungZend_Queue ist eine Proxy Klasse die einen Adapter
repräsentiert.
Die Methoden send(), count($queue),
und receive() werden von jedem Adapter verwendet um mit den
Queues zu interagieren.
Die Methoden createQueue(),
deleteQueue() werden verwendet um Queues zu managen.
Gemeinsamkeiten für alle Adapter
Die Queue Services die von Zend_Queue unterstützt werden
unterstützen nicht alle die gleichen Funktionalitäten. Zum Beispiel unterstützen
Zend_Queue_Adapter_Array und
Zend_Queue_Adapter_Db alle Funktionen, während
Zend_Queue_Adapter_Activemq das Auflisten und Löschen von Queues
der das Zählen von Nachrichten nicht unterstützt.
Man kann erkennen welche Funktionen unterstützt werden indem
Zend_Queue::isSupported() oder
Zend_Queue::getCapabilities() verwendet wird.
createQueue() - Erstellt eine
Queue
deleteQueue() - Löscht eine Queue
send() - Sendet eine Nachricht
send() ist nicht in allen Adaptern vorhanden;
Zend_Queue_Adapter_Null unterstützt
send() nicht.
receive() - Empfängt eine
Nachricht
receive() ist nicht in allen Adaptern vorhanden;
Zend_Queue_Adapter_Null unterstützt
receive() nicht.
deleteMessage() - Löscht eine
Nachricht
count() - Zählt die Anzahl an
Nachrichten in einer Queue
isExists() - Prüft auf die
Existenz einer Queue
receive() Methoden werden von jedem Adapter zur Verfügung
gestellt um mit Queues zu interagieren.
Die Methoden createQueue() und
deleteQueue() werden verwendet um Queues zu managen.