Maison >cadre php >Workerman >Pratique de développement Workerman : mise en œuvre d'un système de file d'attente de messages distribué

Pratique de développement Workerman : mise en œuvre d'un système de file d'attente de messages distribué

PHPz
PHPzoriginal
2023-08-05 19:04:451386parcourir

Pratique de développement Workerman : implémentation d'un système de file d'attente de messages distribué

Introduction :
Dans les applications modernes, le système de file d'attente de messages est un composant important utilisé pour implémenter une communication asynchrone entre les applications. Dans un environnement à forte concurrence, le système de file d'attente de messages peut jouer un rôle dans l'élimination des pics et le remplissage des vallées, améliorant ainsi la stabilité et les performances du système global. Cet article expliquera comment utiliser le framework Workerman pour développer un système de file d'attente de messages distribué et fournira des exemples de code pertinents.

1. Préparation de l'environnement :
Avant de commencer, nous devons préparer l'environnement suivant :

  1. Base de données Redis ;
  2. 2. Structure du projet :
  3. Créez d'abord un répertoire de projet avec la structure de répertoires suivante :
myqueue


    Applications
    • MessageServer
    • Index.php
      • config

        • config. php
        • Bibliothèques
      Workerman
    • vendor
      • composer.json
    • 3. Dépendances d'installation :
  • Ajoutez ce qui suit au fichier composer.json dans le Répertoire myqueue Dépendances :
{
  "require": {
 "workerman/workerman": ">=3.5"
  }
}

Exécutez la commande composer install pour installer le framework Workerman et ses dépendances.
  1. 4. Écrivez le code :

    Créez le fichier Index.php dans le répertoire myqueue/Applications/MessageServer pour démarrer le service de file d'attente de messages :
  2. <?php
    use WorkermanWorker;
    require_once __DIR__ . '/../../Libraries/Workerman/Autoloader.php';
    
    // 创建一个Worker实例
    $worker = new Worker('text://0.0.0.0:2346');
    
    // 设置进程数
    $worker->count = 4;
    
    // 处理接收到的消息
    $worker->onMessage = function($connection, $data)
    {
        // 将消息存储到Redis队列
        $redis = new Redis();
        $redis->connect('127.0.0.1', 6379);
        $redis->lpush('message_queue', $data);
    };
    
    // 启动Worker
    Worker::runAll();
    ?>
  3. Dans myqueue/Applications/MessageServer/ Créez un fichier config.php dans le répertoire config pour configurer les informations de la base de données Redis : composer install,将安装Workerman框架及其依赖。

四、编写代码:
myqueue/Applications/MessageServer目录下创建Index.php文件,用于启动消息队列服务:

<?php
return array(
    'redis_host' => '127.0.0.1',
    'redis_port' => 6379,
);
?>

myqueue/Applications/MessageServer/config目录下创建config.php文件,用于配置Redis数据库信息:

<?php
$message = 'Hello, Workerman!';
$address = '127.0.0.1:2346';

$socket = stream_socket_client("tcp://$address");
fwrite($socket, $message);
fclose($socket);
?>

五、使用消息队列:
在应用程序中,我们可以使用以下代码将消息发送到消息队列:

<?php
// 从Redis队列中获取消息
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$message = $redis->rpop('message_queue');

// 执行相关操作
// ...
?>

六、消费消息:
创建一个消费者脚本,用于从消息队列中获取消息并执行相关操作。

rrreee

七、运行程序:

  1. 启动消息队列服务:执行命令php myqueue/Applications/MessageServer/Index.php start
  2. 启动消费者脚本:执行命令php consumer.phprrreee
  3. 5. Utilisation de la file d'attente des messages :
Dans l'application, nous pouvons utiliser le code suivant pour envoyer des messages à la file d'attente des messages :

rrreee
6. Consommer des messages :

Créez un script consommateur pour obtenir des messages de la file d'attente de messages et effectuer les opérations associées. 🎜rrreee🎜 7. Exécutez le programme : 🎜🎜🎜Démarrez le service de file d'attente de messages : exécutez la commande php myqueue/Applications/MessageServer/Index.php start 🎜🎜Démarrez le script consommateur : exécutez la commande ; php consommateur.php. 🎜🎜🎜 8. Résumé : 🎜Cet article explique comment utiliser le framework Workerman pour développer un système de file d'attente de messages distribué et réaliser une communication asynchrone en stockant les messages dans la file d'attente Redis. De cette manière, nous pouvons implémenter le traitement des messages dans un environnement à haute concurrence et améliorer les performances et la stabilité du système. Les développeurs peuvent encore améliorer et étendre le système de file d'attente de messages en fonction de besoins spécifiques. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn