Zend_Service_Amazon_Sqs
Einführung
Amazon Simple Queue Service (Amazon
SQS) bietet eine einfache, hoch skalierbare, gehostete Queue für das
Speichern von Nachrichten die zwischen Computern verschickt werden. Durch die
Verwendung von Amazon SQS können Entwickler Daten einfach zwischen entfernten
Komponenten Ihrer Anwendung verschieben, welche unterschiedliche Arbeiten durchführen,
ohne das Nachrichten verloren gehen und auch ohne der Notwendigkeit das jede Komponente
immer verfügbar sein muß. Amazon SQS macht es einfach einen automatischen Arbeitsablauf
zu erstellen, und in enger Verknüpfung mit Amazon Elastic Compute Cloud (Amazon EC2)
und auch den anderen AWS Infrastruktur Web Services zu arbeiten.
Amazon SQS arbeitet durch die Bereitstellung von Amazon's Web-Scale Nachrichten
Infrastruktur als Web Service. Jeder Computer im Internet kann Nachrichten hinzufügen
und lesen ohne das Software installiert werden muß oder die Firewall Konfiguration zu
ändern ist. Componenten von Anwendungen die Amazon SQS verwenden können unabhängig
laufen und müssen nicht im gleichen Netzwerk sein, mit der gleichen Technologie
entwickelt worden sein, oder zur gleichen Zeit laufen.
Bei Amazon SQS registrieren
Bevor man mit Zend_Service_Amazon_Sqs beginnt muß man einen
Account registrieren. Sehen Sie bitte in die SQS FAQ Seite auf der Amazon Website
für weitere Informationen.
Nach der Registrierung, bekommt man einen Anwendungsschlüssel und einen geheimen
Schlüssel. Man benötigt beide um auf den SQS Service zugreifen zu können.
API Dokumentation
Die Zend_Service_Amazon_Sqs Klasse bietet den PHP Wrapper zum
Amazon SQS REST Interface. Bitte konsultieren Sie die Amazon
SQS Dokumentation für eine detailierte Beschreibung des Services. Man muß
mit dem grundsätzlichen Konzept vertraut sein um dieses Service verwenden zu können.
Features
Zend_Service_Amazon_Sqs bietet die folgende Funktionalität:
Einen einzelnen Punkt für die Konfiguration des Authentifizierungsdaten von
amazon.sqs die über den kompletten amazon.sqs Namespace verwendet werden
können.
Ein Proxy Objekt das viel bequemer zu verwenden ist als ein HTTP Client
alleine, indem er hauptsächlich die Notwendigkeit entfernt die HTTP POST
Anfrage manuell zu erstellen und auf den REST Service zuzugreifen.
Ein Antwort Wrapper der jeden Antwort Body durchsucht und eine Exception wirft
wenn ein Fehler auftritt, und es unnötig macht die vielen Kommandos wiederholt
auf Erfolg zu prüfen.
Zusätzliche bequeme Methoden für einige der üblicheren Operationen.
Beginnen
Sobald man sich bei Amazon SQS registriert hat ist man bereit seine eigene Queue zu
erstellen und einige Nachrichten auf SQS zu speichern. Jede Queue kann eine unbegrenzte
Anzahl an Nachrichten enthalten, die durch Ihren Namen identifiziert werden.
Das folgende Beispiel demonstriert die Erstellung einer Queue, und das speichern sowie
empfangen von Nachrichten.
Beispiel der Verwendung von Zend_Service_Amazon_Sqs
create('test');
$message = 'this is a test';
$message_id = $sqs->send($queue_url, $message);
foreach ($sqs->receive($queue_url) as $message) {
echo $message['body'].'
';
}
]]>
Das der Zend_Service_Amazon_Sqs Service eine Authentifizierung
benötigt, kann man seine Zugangsdaten (AWS Schlüssel und geheimer Schlüssel) im
Constructor angeben. Wenn man nur einen Account verwendet kann man standardmäßige
Zugangsdaten für den Service setzen:
Operationen der Queue
All messages SQS are stored in queues. A queue has to be created
before any message operations. Queue names must be unique under your
access key and secret key.
Queue names can contain lowercase letters, digits, periods (.),
underscores (_), and dashes (-). No other symbols allowed. Queue
names can be a maximum of 80 characters.
create() creates a new queue.
delete() removes all messages in
the queue.
Zend_Service_Amazon_Sqs Queue Removal Example
create('test_1');
$sqs->delete($queue_url);
]]>
count() gets the approximate number
of messages in the queue.
Zend_Service_Amazon_Sqs Queue Count Example
create('test_1');
$sqs->send($queue_url, 'this is a test');
$count = $sqs->count($queue_url); // Returns '1'
]]>
getQueues() returns the list of the
names of all queues belonging to the user.
Zend_Service_Amazon_Sqs Queue Listing Example
getQueues();
foreach($list as $queue) {
echo "I have queue $queue\n";
}
]]>
Message operations
After a queue is created, simple messages can be sent into the queue
then received at a later point in time. Messages can be up to 8KB in
length. If longer messages are needed please see S3.
There is no limit to the number of messages a queue can contain.
sent($queue_url, $message) send the
$message to the $queue_url SQS
queue URL.
Zend_Service_Amazon_Sqs Message Send Example
create('test_queue');
$sqs->send($queue_url, 'this is a test message');
]]>
receive($queue_url) retrieves
messages from the queue.
Zend_Service_Amazon_Sqs Message Receive Example
create('test_queue');
$sqs->send($queue_url, 'this is a test message');
foreach ($sqs->receive($queue_url) as $message) {
echo "got message ".$message['body'].'
';
}
]]>
deleteMessage($queue_url, $handle)
deletes a message from a queue. A message must first be
received using the receive() method
before it can be deleted.
Zend_Service_Amazon_Sqs Message Delete Example
create('test_queue');
$sqs->send($queue_url, 'this is a test message');
foreach ($sqs->receive($queue_url) as $message) {
echo "got message ".$message['body'].'
';
if ($sqs->deleteMessage($queue_url, $message['handle'])) {
echo "Message deleted";
}
else {
echo "Message not deleted";
}
}
]]>