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

  • 相关阅读:
    java作业总结1
    Java课程学习感想
    java第二阶段作业小结
    java第一阶段作业小结
    Java课程总结
    第二周期作业总结
    第一次作业周期总结
    Java第二阶段作业总结
    Java第一阶段作业总结
    java最后一阶段总结
  • 原文地址:https://www.cnblogs.com/mmmzh/p/10100993.html
Copyright © 2011-2022 走看看