Heim  >  Artikel  >  Backend-Entwicklung  >  Nachrichtenbusbibliothek in PHP8.0

Nachrichtenbusbibliothek in PHP8.0

王林
王林Original
2023-05-14 08:01:351185Durchsuche

Mit der kontinuierlichen Entwicklung von Netzwerkanwendungen werden Nachrichtenwarteschlangen immer häufiger verwendet. Bei Anwendungen mit hoher Parallelität und hoher Leistung kann die Verwendung von Nachrichtenwarteschlangen die Reaktionsgeschwindigkeit und Stabilität des Programms effektiv verbessern. In PHP8.0 wurde eine neue Nachrichtenbusbibliothek hinzugefügt, die die Effizienz der Nachrichtenwarteschlange von PHP erheblich verbessert. In diesem Artikel wird die Verwendung dieser Bibliothek ausführlich vorgestellt.

1. Was ist ein Nachrichtenbus?

Der Nachrichtenbus ist ein allgemeines Nachrichtenmodell, das Nachrichten effektiv von Produzenten an Verbraucher übermitteln kann. Produzenten senden Nachrichten an den Nachrichtenbus und Verbraucher empfangen Nachrichten vom Nachrichtenbus. Als Middleware erleichtert der Nachrichtenbus die Nachrichtenübertragung, reduziert die Systemkopplung und macht den Informationsaustausch zwischen verschiedenen Modulen flexibler.

2. Nachrichtenbusbibliothek in PHP8.0

PHP8.0 führt eine Nachrichtenbusbibliothek namens „AMQP“ ein, die eine Vielzahl von Betriebsmethoden für Nachrichtenwarteschlangen unterstützt, z. B. das Senden und Empfangen von Nachrichten, das Erstellen von Warteschlangen und Austauschern usw Sobald diese Bibliothek eingeführt wurde, wurde sie zum bevorzugten Tool für die Hochleistungsverarbeitung von Nachrichtenwarteschlangen im PHP-Ökosystem.

3. Installieren Sie die AMQP-Erweiterungsbibliothek

Da AMQP keine Standardbibliothek von PHP ist, müssen Sie die entsprechende Erweiterungsbibliothek installieren, bevor Sie AMQP verwenden. Die AMQP-Erweiterungsbibliothek kann über PECL installiert werden. Der Installationsbefehl lautet wie folgt:

pecl install amqp

Nach Abschluss der Installation müssen Sie die Konfigurationsinformationen der Erweiterungsbibliothek in die Datei php.ini einfügen:

extension=amqp

4. Wie Um AMQP zu verwenden

  1. Mit dem Nachrichtenbus verbinden

Zuerst muss eine Verbindung mit dem Nachrichtenbus hergestellt werden. Verwenden Sie in AMQP AMQPConnection, um eine Verbindung zum Nachrichtenbus herzustellen. Für die Verbindung müssen Hostname, Benutzername, Kennwort und andere Informationen angegeben werden. Außerdem können verschiedene Attribute festgelegt werden, z. B. Timeout, Heartbeat-Intervall usw.

$connection = new AMQPConnection(array(
    'host' => 'localhost',
    'port' => '5672',
    'login' => 'guest',
    'password' => 'guest'
));
  1. Erstellen Sie einen Kanal

Nach erfolgreicher Verbindung können Sie einen Kanal erstellen. Der Kanal ist die grundlegende Verwaltungseinheit in AMQP, die zum Senden und Empfangen von Nachrichten, zum Binden von Warteschlangen und Austauschern sowie für andere Vorgänge verwendet werden kann.

$channel = new AMQPChannel($connection);
  1. Eine Warteschlange deklarieren

In AMQP müssen Sie eine Warteschlange deklarieren, bevor Sie Nachrichten an diese Warteschlange senden können.

$queue_name = "my_queue_demo";
$queue = new AMQPQueue($channel);
$queue->setName($queue_name);
$queue->declare(); // 声明队列
  1. send eine Nachricht

Verwenden Sie die Veröffentlichungsmethode der Warteschlange, um eine Nachricht an die Warteschlange zu senden:

$message = "Hello World!";
$queue->publish($message);
  1. receive eine Nachricht

Verwenden Sie die Warteschlange -Methode, um eine Nachricht aus der Warteschlange zu erhalten:

$message = $queue->get();
if ($message) {
    echo "Received Message: " . $message->getBody() . "
";
    $queue->ack($message->getDeliveryTag());
}
  1. Warteschlangen und Austausch binden

In AMQP muss eine Warteschlange an einen Austausch gebunden werden, um zu bestimmen, welche Nachrichten empfangen werden sollen. Die Bindung kann über die Bind-Methode des Exchangers und die Bind-Methode der Warteschlange erfolgen.

$exchange_name = "my_exchange_demo";
$exchange = new AMQPExchange($channel);
$exchange->setName($exchange_name);
$exchange->setType(AMQP_EX_TYPE_DIRECT);
$exchange->declare(); // 声明交换器

// 绑定队列和交换器
$queue->bind($exchange_name, $queue_name);
  1. Nachrichten mit Routing Key veröffentlichen

Wenn Sie einen Schalter verwenden, können Sie Nachrichten mit Routing Key veröffentlichen. Der Routing-Schlüssel ist ein Schlüsselwort, das zum Weiterleiten von Nachrichten an eine bestimmte Warteschlange verwendet wird und beim Binden der Warteschlange und des Austauschs angegeben wird.

$routing_key = "my_routing_key";
$exchange->publish("Hello World!", $routing_key);
  1. Nachrichten mit Routing-Schlüssel konsumieren

Verwenden Sie die Consumer-Methode der Warteschlange, um mit dem Konsumieren zu beginnen, wenn sich eine Nachricht in der Warteschlange befindet. In der Consumer-Methode kann eine Rückruffunktion angegeben werden, um die empfangene Nachricht zu verarbeiten:

$callback = function(AMQPEnvelope $envelope, AMQPQueue $queue) {
    echo "Received Message: " . $envelope->getBody() . "
";
    $queue->ack($envelope->getDeliveryTag());
};

$queue->consume($callback);
  1. Verbindung schließen

Nachdem Sie AMQP nicht mehr verwenden, müssen Sie schließlich die Verbindung zum Nachrichtenbus schließen.

$connection->disconnect();

5. Zusammenfassung

Dieser Artikel stellt die grundlegende Verwendung von AMQP, der Nachrichtenbusbibliothek in PHP8.0, vor, einschließlich der Verbindung des Nachrichtenbusses, der Erstellung von Kanälen, der Deklaration von Warteschlangen, dem Senden und Empfangen von Nachrichten, dem Binden von Warteschlangen und Austauschern und wie Verwenden Sie den Routing-Schlüssel, um Nachrichten mit dem Routing-Schlüssel usw. zu konsumieren. Durch die Verwendung dieser Bibliothek können wir Nachrichtenwarteschlangen bequemer verwenden, um Webanwendungen mit hoher Parallelität und hoher Leistung zu implementieren.

Das obige ist der detaillierte Inhalt vonNachrichtenbusbibliothek in PHP8.0. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn