IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> RabbitMQ+Swoole多进程消费 -> 正文阅读

[PHP知识库]RabbitMQ+Swoole多进程消费

producer.php

<?php
try {
    // 1.建立连接
    $connection = new AMQPConnection([
        'host' => '127.0.0.1',
        'port' => 5672,
        'vhost' => '/',
        'login' => 'guest',
        'password' => 'guest'
    ]);
    $connection->connect();

    // 2.建立通道
    $channel = new AMQPChannel($connection);
    // 3.创建交换机
    $exchange = new AMQPExchange($channel);
    $exchangeName = 'trade';
    $exchange->setName($exchangeName);
    $exchange->setType(AMQP_EX_TYPE_DIRECT);
    $exchange->declareExchange();

    // 5.绑定路由关系发送消息
    $data = [
        'tid' => uniqid(),
        'msg' => 'trade'
    ];

    $routingKey = '/trade';
    $exchange->publish(json_encode($data));

} catch (Exception $e) {
    echo $e->getMessage();

}

consumer.php

<?php


$workerNum = 4; // 一般为CPU核数的4倍
// 进程池
$pool = new Swoole\Process\Pool($workerNum);
// 多进程,共享一个连接
$pool->on('WorkerStart', function($pool, $workerId) {
    // 子进程空间

    echo "WorkerId {$workerId} is started \n";

    try {
        // 1.建立连接
        $connection = new AMQPConnection([
            'host' => '127.0.0.1',
            'port' => 5672,
            'vhost' => '/',
            'login' => 'guest',
            'password' => 'guest'
        ]);

        $connection->connect();
        // 2.建立通道
        $channel = new AMQPChannel($connection);
        // 3.创建队列
        $queueName = 'trade';
        $queue = new AMQPQueue($channel);
        $queue->setName('trade');
        $queue->declareQueue();

        $data = [
            'tid' => uniqid(),
            'msg' => 'trade'
        ];

        $routingKey = '/trade';

        // 4.绑定路由监听
        $exchangeName = 'trade';
        $queue->bind($exchangeName, $routingKey);
        // 阻塞状态,有数据时才会执行
        $queue->consume(function($envelope, $queue) use ($workerId) {
            // ack 应答机制
            // 查看那个进程在消费
            var_dump($workerId, $envelope->getBody());
            $queue->ack($envelope->getDeliveryTag());
        });

    } catch (Exception $e) {
        echo $e->getMessage();

    }

});

// 进程关闭
$pool->on('WorkerStop', function($pool, $workerId) {
    echo "WorkerId {$workerId} is stoped\n";
});



  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:18:07  更:2021-08-15 15:18:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 14:43:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码