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

  • 相关阅读:
    Promise关键知识
    CSS实现简易的轮播图
    绝对定位和相对定位的一些特性
    行内元素及其浮动
    webpack实践总结
    less语法详解
    js模拟事件
    jquery各种事件绑定的区别
    前端路由实现的关键知识点
    js鼠标事件相关知识
  • 原文地址:https://www.cnblogs.com/mmmzh/p/10100993.html
Copyright © 2011-2022 走看看