• 【PHP进阶】Rabbitmq的实际使用


    RabbitMQ是一个流行的消息队列中间件,它提供了可靠的消息传递机制。在使用RabbitMQ时,有几个重要的概念需要了解:

    消息队列(Message Queue)RabbitMQ中的核心概念之一。它是消息的缓冲区,用于存储发送者发送的消息,以便等待接收者处理。

    消息生产者(Producer):负责向消息队列中发送消息的应用程序或组件。

    消息消费者(Consumer):从消息队列中接收并处理消息的应用程序或组件。

    交换机(Exchange):用于将消息路由到一个或多个消息队列的组件。交换机根据规则(如路由键)将消息发送到相应的队列。

    队列绑定(Queue Binding):将队列与交换机关联的过程。绑定定义了交换机如何将消息路由到与之绑定的队列。

    路由键(Routing Key):用于将消息从交换机路由到特定队列的关键字。交换机根据消息的路由键将消息发送到一个或多个与之匹配的队列。

    确认(Acknowledgment):指消费者收到消息并已确认处理完成的机制。RabbitMQ支持确认机制,确保消息被正确地处理。

    持久化(Durability):指消息队列和消息是否持久化存储到磁盘上,以防止消息丢失。持久化确保在RabbitMQ服务器重启时不会丢失消息。

    PHP实际运用:

    我们来创建一个简单的 PHP 实例来使用 RabbitMQ。首先,你需要确保已经安装了 RabbitMQ 服务器,并且在 PHP 中安装了 RabbitMQ 扩展。然后,我们将创建一个简单的生产者和消费者来发送和接收消息。

    步骤 1: 安装 RabbitMQ PHP 扩展

    你可以使用 pecl 来安装 RabbitMQ PHP 扩展:

    pecl install amqp
    
    • 1

    步骤 2: 编写生产者

    
    require_once __DIR__ . '/vendor/autoload.php'; // 载入 Composer 自动加载器
    
    use PhpAmqpLib\Connection\AMQPStreamConnection;
    use PhpAmqpLib\Message\AMQPMessage;
    
    // 连接到 RabbitMQ 服务器
    $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel();
    
    // 声明队列
    $channel->queue_declare('hello', false, false, false, false);
    
    // 创建消息
    $msg = new AMQPMessage('Hello World!');
    
    // 发送消息到队列
    $channel->basic_publish($msg, '', 'hello');
    
    echo " [x] Sent 'Hello World!'\n";
    
    // 关闭连接
    $channel->close();
    $connection->close();
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    步骤 3: 编写消费者

    
    require_once __DIR__ . '/vendor/autoload.php'; // 载入 Composer 自动加载器
    
    use PhpAmqpLib\Connection\AMQPStreamConnection;
    
    // 连接到 RabbitMQ 服务器
    $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel();
    
    // 声明队列
    $channel->queue_declare('hello', false, false, false, false);
    
    echo " [*] Waiting for messages. To exit press CTRL+C\n";
    
    // 定义回调函数来处理接收到的消息
    $callback = function ($msg) {
      echo ' [x] Received ', $msg->body, "\n";
    };
    
    // 消费队列消息
    $channel->basic_consume('hello', '', false, true, false, false, $callback);
    
    // 持续监听消息
    while ($channel->is_consuming()) {
      $channel->wait();
    }
    
    // 关闭连接
    $channel->close();
    $connection->close();
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    这就是一个简单的 RabbitMQ 示例。生产者发送消息到名为 “hello” 的队列,而消费者监听这个队列并打印出收到的消息.

    我们基于这些基础代码就能做业务啦。不同的业务会有些许差别。

    本文由mdnice多平台发布

  • 相关阅读:
    C陷阱与缺陷 第7章 可移植性缺陷 7.11 可移植性问题的一个例子
    微信小程序实现tab切换和吸顶效果
    中国节日主题网站设计 红色建军节HTML+CSS 红色中国文化主题网站设计 HTML学生作业网页
    数据库高级 V
    计算机毕业设计java毕业设计项目源代码精品SSM学生选课系统[包运行成功]
    C++游戏设计教程(4)—— 用颜色原理打印平面地图
    积分商城游戏能够给商家带来什么?怎么搭建积分商城?
    git stash的使用方法
    超全金属PBR多通道贴图素材网站整理
    docker安装postgresql数据库
  • 原文地址:https://blog.csdn.net/a1034996/article/details/136375390