Heim  >  Artikel  >  PHP-Framework  >  Implementieren Sie die Nachrichtenwarteschlange mit ThinkPHP6

Implementieren Sie die Nachrichtenwarteschlange mit ThinkPHP6

PHPz
PHPzOriginal
2023-06-21 17:51:392816Durchsuche

Mit dem Aufkommen des Internets und der Big-Data-Ära sind Nachrichtenwarteschlangen zu einem unverzichtbaren Bestandteil der Geschäftsentwicklung und Datenverarbeitung geworden. Im PHP-Bereich war das ThinkPHP-Framework schon immer eine beliebte Wahl bei Entwicklern. In diesem Artikel erfahren Sie, wie Sie mit ThinkPHP6 Nachrichtenwarteschlangen implementieren, und erhalten einige praktische Codebeispiele.

  1. Installieren Sie die Nachrichtenwarteschlangenerweiterung

Bevor wir mit der Erstellung der Nachrichtenwarteschlange beginnen, müssen wir eine Nachrichtenwarteschlangenerweiterung installieren (z. B. RabbitMQ oder Beanstalkd). In diesem Artikel wird RabbitMQ als Beispiel verwendet. Im Folgenden sind die Installationsschritte aufgeführt:

1.1 Erlang installieren

RabbitMQ wurde in der Sprache Erlang entwickelt, daher muss Erlang zuerst installiert werden.

1.2 Installieren Sie Rabbitmq

bevor, in denen Sie Rabbitmq installieren müssen, müssen Sie die folgenden Befehle im Terminal ausführen. , wir können Worker (Worker-Prozess) verwenden, um Warteschlangen und Verbraucher zu erstellen. Im Folgenden sind die spezifischen Schritte aufgeführt:

2.1 Aktivieren Sie den Worker-Modus

    Suchen Sie in der Datei app.php im Konfigurationsverzeichnis das folgende Codesegment:
  1. sudo apt-get install wget gnupg -y
  2. Ändern Für den folgenden Inhalt:
wget -O - "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian buster erlang
deb https://dl.bintray.com/rabbitmq/debian buster main
EOF
sudo apt-get update -y
sudo apt-get install rabbitmq-server -y

Hier wird der Treibermodus in RabbitMQ geändert und die relevanten Konfigurationsinformationen der RabbitMQ-Verbindung (lokale Adresse, Benutzername, Passwort usw.) sowie der Name des Switches und der Warteschlange angezeigt angegeben.

2.2 Erstellen Sie einen Nachrichtenproduzenten. Erstellen Sie einen Controller mit dem Namen Task im App-Verzeichnis. Die Methode heißt send. Der Code lautet wie folgt:

    'worker' => [
        'type'  => 'socket',   // 驱动方式
        'host'  => '0.0.0.0',  // 监听地址
        'port'  => 2345,       // 监听端口
    ],

Hier wird das Json-Format verwendet, um Daten in die Nachrichtenwarteschlange zu übertragen.

2.3 Erstellen Sie einen Nachrichtenkonsumenten

Erstellen Sie einen Controller mit dem Namen Worker im App-Verzeichnis. Die Methode heißt onMessage. Der Code lautet wie folgt:

    'worker' => [
        'type'      => 'rabbitmq',
        'host'      => 'localhost',
        'port'      => 5672,
        'user'      => 'guest',
        'password'  => 'guest',
        'vhost'     => '/',
        'exchange'  => 'test',  // 交换机名称
        'queue'     => 'test',  // 队列名称
    ],

In der onMessage-Methode können wir die Logik für die Verarbeitung empfangener Nachrichten anpassen. Beispielsweise können die Daten analysiert und in einer Datenbank gespeichert werden, und anschließend können Textnachrichten oder E-Mail-Benachrichtigungen an Benutzer gesendet werden.

Führen Sie den Worker aus

Nach Abschluss der obigen Konfiguration müssen wir nur noch den folgenden Befehl im Terminal ausführen, um den Worker-Modus zu starten:

namespace appcontroller;

use thinkworkerServer;

class Task extends Server
{
    public function send()
    {
        $data = ['name'=>'ThinkPHP','score'=>100];
        $this->worker->push(json_encode($data));
    }
}

Testen der Nachrichtenwarteschlange

    Beim Testen der Nachrichtenwarteschlange haben Sie kann zwei Terminals öffnen.
  1. Führen Sie den folgenden Befehl im ersten Terminal aus, um die Nachricht in die Warteschlange zu verschieben:
namespace appcontroller;

use thinkworkerServer;

class Worker extends Server
{
    public function onMessage($connection, $data)
    {
        // 处理逻辑
    }
}

Führen Sie den folgenden Befehl im zweiten Terminal aus und beobachten Sie die empfangene Nachricht:

php think worker:server
    In diesem Artikel wird erläutert, wie Sie eine Nachrichtenwarteschlange mit ThinkPHP6 implementieren. Es kann Entwicklern helfen, umfangreiche Datenverarbeitung, asynchrone Aufgabenausführung usw. schneller zu bewältigen und die Leistung und Stabilität von Anwendungen zu verbessern.

Das obige ist der detaillierte Inhalt vonImplementieren Sie die Nachrichtenwarteschlange mit ThinkPHP6. 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