zoukankan      html  css  js  c++  java
  • php rabbitmq demo

    composer安装php rabbitmq包

    新建composer.json文件,composer install 安装

    {
        "require": {
            "php-amqplib/php-amqplib": ">=2.6.1"
        }
    }

    创建config.php文件

    <?php
    return [
        'vendor' => [
            'path' => './vendor'
        ],
        'rabbitmq' => [
            'host' => '127.0.0.1',
            'port' => '5672',
            'login' => 'guest',
            'password' => 'guest',
            'vhost' => '/'
        ]
    ];
    ?>

    创建消费者 rabbit_consumer.php,注意具体文件引用的路径

    <?php
    
    use PhpAmqpLibConnectionAMQPStreamConnection;
    use PhpAmqpLibMessageAMQPMessage;
    
    $config = require "./config.php";
    require_once $config['vendor']['path'] . '/autoload.php';
    
    $connection = new AMQPStreamConnection($config['rabbitmq']['host'], $config['rabbitmq']['port'],
        $config['rabbitmq']['login'], $config['rabbitmq']['password'], $config['rabbitmq']['vhost']);
    $channel = $connection->channel();
    
    $channel->queue_declare('hello', false, false, false, false);
    $callback = function($msg) {
      echo $msg->body;
      file_put_contents('log.txt', $msg->body);
    };
    
    $channel->basic_consume('hello', '', false, true, false, false, $callback);
    
    while(true) {
        $channel->wait();
    }
    $channel->close();
    $connection->close();
    
    ?>

    创建生产者 rabbit_pulisher.php

    <?php
    
    
    
    $config = require "./config.php";
    
    require_once $config['vendor']['path'] . '/autoload.php';
    
    use PhpAmqpLibConnectionAMQPStreamConnection;
    use PhpAmqpLibMessageAMQPMessage;
    
    $connection = new AMQPStreamConnection($config['rabbitmq']['host'], $config['rabbitmq']['port'],
        $config['rabbitmq']['login'], $config['rabbitmq']['password'], $config['rabbitmq']['vhost']);
    $channel = $connection->channel();
    
    //发送方其实不需要设置队列, 不过对于持久化有关,建议执行该行
    $channel->queue_declare('hello', false, false, false, false);
    
    $msg = new AMQPMessage('Hello World!123'.time());
    $channel->basic_publish($msg, '', 'hello');
    
    echo " [x] Sent 'Hello World!x'
    ";
    
    $channel->close();
    $connection->close();
    ?>

    首先运行消费者

    php rabbit_consumer.php

    另起窗口运行生产者 

    php rabbit_publisher.php

  • 相关阅读:
    js加载完所有的图片,适合电子相册哦~~~~
    获取路径参数的方法
    JS 对数组的常用处理
    JS date常用代码积累
    js框架设计1.4类型判断
    js框架设计1.3数组化
    js框架设计1.2对象扩展笔记
    js框架设计1.1命名空间笔记
    java 跨域
    ACM-ICPC 2018 徐州赛区网络预赛 I Characters with Hash(模拟)
  • 原文地址:https://www.cnblogs.com/mmmzh/p/10100993.html
Copyright © 2011-2022 走看看