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

附上:

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

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

1.用户权限体系

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

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

#admin为新建的用户,123456为密码rabbitmqctl add_user admin 123456  #将用户设置为管理员角色(管理员角色才能管理用户哦)rabbitmqctl  set_user_tags admin administrator 

2. 后台管理界面

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

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进行安装

require_once __DIR__ . '/vendor/autoload.php';use PhpAmqpLibConnectionAMQPStreamConnection;use PhpAmqpLibMessageAMQPMessage;$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也有一套灵活的集群解决方案,在下一节我们将来一同学习有关集群的一些支持,那么今天的博文就到这里,多谢大家的支持!

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

channel rabbitmq 配置_「喵咪MQ(2)」RabbitMQ单机模式使用相关推荐

  1. mq消费者组_「架构师MQ进阶」RocketMQ源码分析(四)- 源代码包结构分析

    在前面第一篇中已经将源代码下载到本地了,本篇主要是介绍代码中相关模块到作用.036.Rocket-MQ-Source-code-cover.png 一.源码结构 RocketMQ源码组织方式基于Mav ...

  2. [喵咪MQ(1)]RabbitMQ简单介绍准备工作

    [喵咪MQ(1)]RabbitMQ简单介绍准备工作 前言 哈喽大家好呀! 看标题就知道我们这次要讲MQ,之前博客中有提到的KafKa理论上来说也是一个优秀的MQ队列软件,比较知名的MQ有:Go语言编写 ...

  3. 热成像成像不清楚是什么时候_「从零搞机」热成像仪查看 分形工艺Node 202 机箱 风道散热情况...

    分形工艺的Node 202是我非常喜欢的一个机箱,是现如今搞机圈一众肥宅A4机箱里为数不多的瘦高个. 分形工艺Fractal Design Node 202 为什么喜欢它? 好看,耐看 分形工艺的设计 ...

  4. [喵咪大数据]Hadoop集群模式

    既然是大数据无论存储和处理都需要相当大的磁盘或者是处理的资源消耗,那么单机肯定是满足不了我们的需求的,所以本节我们就来了解Hadoop的集群模式搭建,在集群情况下一同配合处理任务分发,存储分担等相关的 ...

  5. chrome vue插件_「Vue学习记录一」开发环境准备

    1.开发工具 - VS Code ❝ 选择 VS Code 是因为这是一款很容易上手的工具,在 VS Code 中找到的每个功能都完成一项出色的工作,构建了一些简单的功能集,包括语法高亮.智能补全.集 ...

  6. druid seata 配置_架构设计 | 基于Seata中间件,微服务模式下事务管理

    一.Seata简介 1.Seata组件 Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务.Seata将为用户提供了AT.TCC.SAGA.XA事务模式,为用户打造一 ...

  7. define定义的函数如何引用_「C与指针心得」25.预处理器-宏函数

    感谢您的阅读与点赞!欢迎关注:「大猫玩程序」,查看C语言系列文章 上一节讲了一些系统的预定义宏,这一节来讲一讲 宏定义.宏函数. 预处理常量 define: 预处理器指令从#开始,到最后第一个换行符为 ...

  8. ideahtml标签不提示_「系统自带标签」如何帮门店区分价值顾客?| 早8点141期

    141 期 | 系统标签 · 本文约 603 字,预计阅读 3 分钟 · 大家好,我是小檬,这是乐檬早八点为乐檬用户提供的产品应用学习栏目第 141 期. 今天的主题是:[新·会员篇]「系统自带标签」 ...

  9. sscanf函数用法详解_「MOS考点详解」一道例题详解GETPIVOTDATA函数的用法

    要点提示 GETPIVOTDATA函数是MOS Excel认证考试的重要考点.资深Office培训师谷月老师在此借助一道例题详细解读这个函数. 例题 在「按地区」工作表上的单元格 H3 中,使用 GE ...

最新文章

  1. CSS媒体查询 @media
  2. python 微积分_《用 Python 学微积分》笔记 2
  3. flask-mail异步发送邮件_.NET Core使用FluentEmail发送邮件
  4. 在移动了用户数据时Android平台的路径设置
  5. 论文 参考文献的格式说明
  6. JavaScript 原始数据类型转换
  7. 【TA-霜狼_may-《百人计划》】图形3.2 混合模式及剔除
  8. 苹果sf字体_全网首发丨iOS13越狱系统字体分析+iOS13新字体分享
  9. select ajax加载数据,ajax 执行成功后返回j页面加载 joson 数据(加载select数据)
  10. Scala中的方法函数的定义
  11. 【JAVA程序设计】(C00047)基于springboot+vue的宠物服务管理系统
  12. 服务器响应码418,HTTP状态码是什么?与SEO相关的有哪些?
  13. 人工智能数学基础03之:隐函数推导
  14. 解决 M1 MAC安装软件提示来自身份不明开发者
  15. 深度学习第J6周:ResNeXt-50实战解析
  16. [知乎高赞回答]TCP/IP协议到底在讲什么?
  17. 解决ubuntu下kazam录制视频无法在windows播放问题
  18. 维修一块山寨三星860EVO固态,得一微YS9082HC+3颗intel QLC黑片
  19. Camera和Image sensor技术基础笔记(10) -- sensor器件适配需要注意的地方
  20. 【C++】将罗马数字转换成阿拉伯数字

热门文章

  1. 用户组修改工具samusrgrp
  2. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark
  3. java cdata xml 解析,如何解析lt;![CDATA []]gt;的XML
  4. android之json解析优化,Android开发之json解析
  5. php写出个人所得税,PHP计算个人所得税示例【不使用速算扣除数】
  6. [CE5入门系列1]如何正确安装和初步使用
  7. 全球无人车头部三强格局明确,百度自动驾驶估值400亿美金
  8. 树莓派悄悄放了个微软“后门”,系统加入微软源却未告知,用户怒了
  9. 不到400元,将你的手机变成可编程AI机器人丨英特尔出品
  10. WWDC的31个年头,来点不一样的!听说库克还忍不住要收割13岁以上程序员