zoukankan      html  css  js  c++  java
  • 基于PHP使用rabbitmq实现消息队列

    1.从github上面获取AMQP基于php的实现扩展

    2.创建生产者 send.php

     1 require(__DIR__ . '/../protected/vendor/autoload.php');
     2 
     3 use PhpAmqpLibConnectionAMQPStreamConnection;
     4 use PhpAmqpLibMessageAMQPMessage;
     5 
     6 
     7 $connection = new AMQPStreamConnection('192.168.38.129', 5672, 'fanwq', 'ysq');
     8 $channel = $connection->channel();
     9 $channel->queue_declare('hello', false, false, false, false);
    10 
    11 $msg = new AMQPMessage($i.'-Hello World! --' . $_SERVER['SSH_CONNECTION']);
    12 $channel->basic_publish($msg, '', 'hello');
    13 echo " [{$i}] Sent 'Hello World!'
    ";
    14 $channel->close();
    15 $connection->close();
    View Code

    3.创建消费者 receive.php

     1 require(__DIR__ . '/../protected/vendor/autoload.php');
     2 
     3 use PhpAmqpLibConnectionAMQPStreamConnection;
     4 use PhpAmqpLibMessageAMQPMessage;
     5 
     6 $connection = new AMQPStreamConnection('192.168.38.129', 5672, 'fanwq', 'ysq');
     7 $channel = $connection->channel();
     8 
     9 $channel->queue_declare('hello', false, false, false, false);
    10 echo ' [*] Waiting for messages. To exit press CTRL+C', "
    ";
    11 $callback = function($msg) {
    12     echo " [x] Received ", $msg->body, "
    ";
    13 };
    14 
    15 $channel->basic_consume('hello', '', false, true, false, false, $callback);
    16 
    17 while(count($channel->callbacks)) {
    18     $channel->wait();
    19 }
    View Code

    4.在cli模式下 分别执行 send.php  receive.php 可以看到如下:

    说明生产 消费端均ok。

    5.管理 查看队列消息:安装rabbitmq_management插件

    【5-1】查看当前可用插件:

    【5-2】 安装启用 rabbitmq_management插件

    【5-3】进入rabbitmq_management管理端:http://192.168.38.129:15672/

    【5-4】 guest用户没有权限 需要授权

    rabbitmqctl set_user_tags guest monitoring 

    rabbitmqctl set_user_tags guest management

    【5-5】登陆成功

  • 相关阅读:
    sql 读取txt 文件内容,并写入sql的方法
    Thread.Mutex 互斥体
    SQL语句创建登录名,数据库用户,数据库角色及分配权限:
    倾国倾城 歌词
    LINUX下c/c++的学习(4)linux file and direction(stat fstat lstat access umask chmod ...)
    飞蛾扑火
    生成验证码点击可刷新
    C#项目调用非托管代码函数的方法
    【学习】数据库事务
    如何判断数据库是否存在
  • 原文地址:https://www.cnblogs.com/justphp/p/6110657.html
Copyright © 2011-2022 走看看