rabbitmq中间件的安装和简单使用

本文介绍如何在Windows环境下安装配置RabbitMQ消息中间件,包括安装Erlang环境、配置环境变量、安装RabbitMQ服务及基本使用方法等步骤,并提供了PHP语言的生产者和消费者代码示例。

Windows安装使用rabbitmq。

 

1,先安装Erlang;

2,配置环境变量;

3,安装rabbitmq;

4,创建账号、设置权限,基于命令行测试。

5,代码示例。

1),rabbimq基于Erlang语言开发,首先下载Erlang。https://www.erlang.org/downloads

下载后,直接安装exe文件,注意最好安装目录不要带有特殊符号,比如:-、/,否则很可能安装不完全。

2),配置erLang环境变量

        新建变量:ERLANG_HOME = path/erl (安装目录,比如:D:\erl)

         配置系统变量path:%ERLANG_HOME%\bin

3),安装rabbitmq

         下载安装包,安装过程和erLang一样,安装目录最好不要使用特殊字符:http://www.rabbitmq.com/

          安装成功后,进入安装目录sbin,运行rabbitmq-service.bat

           

        在sbin目录运行cmd,输入:rabbitmq-plugins enable rabbitmq_management

       (重启RabbitMQ服务可输入:net stop RabbitMQ && net start RabbitMQ)

可在浏览器访问:http://127.0.0.1:15672 (默认账号guest/guest)

4),创建账号、设置权限

选择账号,设置权限

5),代码示例

         

<?php
/**
 * 部分示例代码来源于网络,感谢!
 * 生产者发布队列任务
 */

$config = array(
    'host' => '127.0.0.1',
    'vhost' => '/',
    'port' => 5672,
    'login' => 'user',
    'password' => 'pass'
);
$cnn = new \AMQPConnection($config);
if (!$cnn->connect()) {
    echo "Cannot connect to the broker";
    exit();
}
$ch = new \AMQPChannel($cnn);
$ex = new \AMQPExchange($ch);
//消息的路由键,一定要和消费者端一致
$routingKey = 'key_1';
//交换机名称,一定要和消费者端一致,
$exchangeName = 'exchange_1';
$ex->setName($exchangeName);
$ex->setType(AMQP_EX_TYPE_DIRECT);
$ex->setFlags(AMQP_DURABLE);
$ex->declareExchange();
//创建10个消息
for ($i=1;$i<=10;$i++){
    //消息内容
    $msg = array(
        'data'  => 'message_'.$i,
        'hello' => 'world',
    );
    //发送消息到交换机,并返回发送结果
    //delivery_mode:2声明消息持久,持久的队列+持久的消息在RabbitMQ重启后才不会丢失
    echo "Send Message:".$ex->publish(json_encode($msg), $routingKey, AMQP_NOPARAM, array('delivery_mode' => 2))."\n";
    //代码执行完毕后进程会自动退出
}
<?php
/**
 * 部分代码来源网络,感谢!
 * 消费者接受队列任务
 */
//声明连接参数
$config = array(
    'host' => '127.0.0.1',
    'vhost' => '/',
    'port' => 5672,
    'login' => 'user',
    'password' => 'pass'
);
//连接broker
$cnn = new \AMQPConnection($config);
if (!$cnn->connect()) {
    echo "Cannot connect to the broker";
    exit();
}
//在连接内创建一个通道
$ch = new \AMQPChannel($cnn);
//创建一个交换机
$ex = new \AMQPExchange($ch);
//声明路由键
$routingKey = 'key_1';
//声明交换机名称
$exchangeName = 'exchange_1';
//设置交换机名称
$ex->setName($exchangeName);
//设置交换机类型
//AMQP_EX_TYPE_DIRECT:直连交换机
//AMQP_EX_TYPE_FANOUT:扇形交换机
//AMQP_EX_TYPE_HEADERS:头交换机
//AMQP_EX_TYPE_TOPIC:主题交换机
$ex->setType(AMQP_EX_TYPE_DIRECT);
//设置交换机持久
$ex->setFlags(AMQP_DURABLE);
//声明交换机
$ex->declareExchange();
//创建一个消息队列
$q = new \AMQPQueue($ch);
//设置队列名称
$q->setName('queue_1');
//设置队列持久
$q->setFlags(AMQP_DURABLE);
//声明消息队列
$q->declareQueue();
//交换机和队列通过$routingKey进行绑定
$q->bind($ex->getName(), $routingKey);
//接收消息并进行处理的回调方法
function receive($envelope, $queue) {
    //休眠两秒,
    sleep(2);
    //echo消息内容
    echo $envelope->getBody()."\n";
    $conn = new mysqli('localhost', 'root', 'root', 'data');

//连接数据库方式2

// $conn = new mysqli();

// $conn -> connect('localhost', 'root', 'password', 'test');

//check connection (检查PHP是否连接上MYSQL)

    if ($conn -> connect_errno) {

        printf("Connect failed: %s\n", $conn->connect_error);

        exit();

    }

    //查询代码

    $sql = "select * from user where id = 1";

    $query = $conn->query($sql);

    while($row = $query->fetch_array()){

        echo $row['id'];

    }

    //查询代码

    //释放结果集+关闭MySQL连接

    $query->free_result();

    $conn -> close();
    //显式确认,队列收到消费者显式确认后,会删除该消息
    $queue->ack($envelope->getDeliveryTag());
}
//设置消息队列消费者回调方法,并进行阻塞
$q->consume("receive");
//$q->consume("receive", AMQP_AUTOACK);//隐式确认,不推荐

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值