前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[喵咪MQ(2)]RabbitMQ单机模式使用

[喵咪MQ(2)]RabbitMQ单机模式使用

作者头像
喵了个咪233
发布2018-03-02 14:56:13
8400
发布2018-03-02 14:56:13
举报
文章被收录于专栏:喵了个咪的博客空间

[喵咪MQ(2)]RabbitMQ单机模式使用

哈喽!本周我们又见面了,今天呢我们接着说MQ软件RabbitMQ的故事,在上小节以及成功的安装了RabbitMQ也配置了开机启动,那么我们应该要开始的真正的接触并且使用它来管理使用解决业务问题,请紧张的往下看…

附上:

喵了个咪的博客:w-blog.cn

RabbitMQ官网 :http://www.rabbitmq.com/

1.用户权限体系

在RabbitMQ中提供了一套账户体系,账户体系围绕着vhost进行展开,那么vhost是什么东西,一个比较相近的意思就是虚拟空间或命名空间,每个用户都可以分配一个vhost或多个vhost的操作权限,只有拥有了操作权限这个用户才能管理这个vhost,在不同的vhost里面队列名称可以重复,所以vhost可以用来区分开发测试环境,也就是说只要部署一套rabbitMQ就可以适用多个环境

接下来我们创建一个管理员账户让我们可以进行后续的web界面管理时用户登录,以及使用队列时的用户

代码语言:javascript
复制
#admin为新建的用户,123456为密码
rabbitmqctl add_user admin 123456  

#将用户设置为管理员角色(管理员角色才能管理用户哦)
rabbitmqctl  set_user_tags admin administrator 

2. 后台管理界面

rabbitMQ提供一套功能全面的管理后台程序,我们需要开启web服务即可通过http://主机IP:15672 进行访问(建立防火墙进行拦截,通过nginx限定IP访问)

代码语言:javascript
复制
rabbitmq-plugins enable rabbitmq_management #启用web插件

rabbitmq-plugins disable rabbitmq_management #关闭web插件

通过管理员登录就可以看到如下界面了

用户管理可以看到现在的用户列表,以及各个用户可以操作的vhost

点击一个用户可以控制权限分配新的vhost

Vhost 可以在用户下面的菜单进行创建

3.使用队列

当我们单机模式准备工作完成后就可以开始使用RabbitMQ了,当然我们需要使用一门语言来开发并且需要用上SDK,RabbitMq官方提供了各类语言的扩展:http://www.rabbitmq.com/devtools.html

我们以php-amqplib为例子,使用composer进行安装

代码语言:javascript
复制
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

$config = array(
    'host'     => "localhost",
    'port'     => "5672",
    'user'     => "admin",
    'password' => "123456",
    'vhost'    => "/"
);

// 链接RabbitMQ
$connection = new AMQPStreamConnection($config['host'], $config['port'], $config['user'], $config['password'], $config['vhost']);
// 建立通道
$channel = $this->connection->channel();

// 声明操作的队列,不存在会去创建 如果写入一个不存在的队列会丢失结果(此操作耗时严重谨慎使用)
$this->channel->queue_declare("test_queue", false, true, false, false);

// 消息转换 有持续交付 和 非持续交付两种
$message = new AMQPMessage("", array('delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT));
// 写入一条消息进入队列
$channel->basic_publish($message, '', "test_queue");

// 读取消息处理 指定需要操作的队列以及处理方法
$channel->basic_qos(null, 1, null);
$channel->basic_consume("test_queue", '', false, false, false, false, function ($msg) {
    $data = $msg->body;
    echo $data;
    // 告知消息已经处理完成,只有告知消息处理成功这条消息才算被消费
    $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
});

// 循环处理
while (count($this->channel->callbacks)) {
    $this->channel->wait();
}

4 总结

本小节介绍了在单机场景下用户的配置,web管理界面的使用,以及怎么使用RabbitMQ来写入消息消费消息,但是在我们面前还有一个比较重要的问题,如果RabbitMQ不幸宕机了怎么办呢?业务不就不能正常使用下去了吗?不用担心RabbitMQ也有一套灵活的集群解决方案,在下一节我们将来一同学习有关集群的一些支持,那么今天的博文就到这里,多谢大家的支持!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [喵咪MQ(2)]RabbitMQ单机模式使用
    • 1.用户权限体系
      • 2. 后台管理界面
        • 3.使用队列
          • 4 总结
          相关产品与服务
          轻量应用服务器
          轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门软件打包实现一键构建应用,提供极简上云体验。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档