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

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

w-blog博客

哈喽!本周我们又见面了,今天呢我们接着说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 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也有一套灵活的集群解决方案,在下一节我们将来一同学习有关集群的一些支持,那么今天的博文就到这里,多谢大家的支持!

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

时间: 2024-11-01 14:24:52

[喵咪MQ(2)]RabbitMQ单机模式使用的相关文章

[喵咪MQ(3)]RabbitMQ集群安装配置

[喵咪MQ(3)]RabbitMQ集群安装配置 w-blog博客 在各项生产环境使用中,容灾总是一个很重要的话题,如果单点故障会导致整个系统奔溃或者是丢失数据是不是好气好气的,领导会追着你问这是怎么了?你只能说是我们没有经验什么什么组件故障了,这个是低级玩法,高级玩法是配置好集群容灾,告诉老板死一两台机器宕机了没有事没有影响,所以我们今天就来讲讲RabbitMQ的集群模式... 附上: 喵了个咪的博客:w-blog.cn RabbitMQ官网 :http://www.rabbitmq.com/

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

[喵咪MQ(1)]RabbitMQ简单介绍准备工作 前言 哈喽大家好呀! 看标题就知道我们这次要讲MQ,之前博客中有提到的KafKa理论上来说也是一个优秀的MQ队列软件,比较知名的MQ有:Go语言编写的 nsq , 阿里云的RocketMQ , 大名鼎鼎的KafKa 以及 redis(也可以做队列),不过我们这次的主角是RabbitMQ. 附上: 喵了个咪的博客:w-blog.cn RabbitMQ官网 :http://www.rabbitmq.com/ 1.队列做什么?RabbitMQ是什么?

[喵咪KafKa(2)]单机模式运行KafKa

[喵咪KafKa(2)]单机模式运行KafKa 前言 在上节我们介绍完KafKa之后,今天我们来搭建KafKa三种模式(单机模式,伪集群,集群)中的一种单机模式的搭建,在正常的使用中我们一般吧单机模式作为开发环境的标配,今天就来和喵咪一同搭建一个KafKa的单机环境吧! 附上: 喵了个咪的博客:w-blog.cn KafKa官网地址:http://kafka.apache.org/ Git地址:https://github.com/apache/kafka 百度网盘 1. 安装zookeeper

[喵咪KafKa(1)]KafKa的介绍以及使用场景

[喵咪KafKa(1)]KafKa的介绍以及使用场景 前言 哈喽!大家好呀,真是一坑未平一坑又起,otter还在继续更新的同时,笔者也为大家带来了关于kafka相关的一系列博客,要说到kafka就离不开现在特别火热的大数据技术,了解的童鞋可能只要一些大数据的带名词比如Hadoop,spark,storm,包括最近很火的微服务,kafka也是其中一员,但是不同的是kafka并不负责处理数据,要给kafka一个定义的话应该是一个分布式发布订阅消息系统可以说是一个数据通道保证数据稳定传输,要是感兴趣就

[喵咪Redis]Redis-Sentinel

[喵咪Redis]Redis-Sentinel 前言 redis-Sentinel 是我们这次来一同学习 redis 的重点,在我们现在的系统已经离不开 redis 的时候 , redis 挂掉了或者是一些其他问题都是致命的 , 那么怎么做到 redis 的高可用呢 , 官方有提供一个管理 redis 集群自动容灾的一个应用 Redis-Sentinel .那么我们就来一同搭建一个 redis 高可用的 redis 集群. 附上: 喵了个咪的博客:w-blog.cn Redis官网:http:/

[喵咪Golang(1)]Go语言开篇

[喵咪Golang(1)]Go语言开篇 前言 哈喽大家好啊!喵咪我今天又来开坑了,最近学习和使用了go语言了一段时间,也在组合一些好的组件编写phalgo开发框架.在想是不是可以来写一个套关于go语言的文章和一些好的组件的介绍使用,虽然自己也是半桶水但是我相信在编写的过程中能给自己很多收获,最好也能帮助大家了解和熟悉golang这门语言,话不多说那么就开始今天的go语言之旅吧~ 附上: 喵了个咪的博客:w-blog.cn phalgo地址:github.com/wenzhenxi/phalgo

[喵咪Linux(2)]环境变量的坑

[喵咪Linux(2)]环境变量的坑 前言 玩过linux的童鞋对环境变量都不陌生,我们在安装好一些软件,组件之后想要直接使用它都需要加入环境变量,并且比如java啊golang都必须依赖你设置的环境变量来运行,在最近笔者在日常工作中遇到了一些关于环境变量的坎,所以今天把这些"坑"分享出来和大家交流! 附上: 喵了个咪的博客:w-blog.cn 1. 两场景 笔者有个习惯就是喜欢追问场景,比如别人问我一个问题,token要怎么用sign要怎么玩,我都会先问你是什么场景,什么场景才使用什

[喵咪Golang(2)]安装和Helloworld

[喵咪Golang(2)]安装和Helloworld 前言 哈喽大家好啊!今天我们紧接着来学习关于Go语言的安装和使用Go打印出helloworld,本节内容将会讲解关于Go语言在Liunx下怎么安装,环境变量怎么配置分别起到了什么作用,然后我们把go运行起来并且打印出helloworld,那么就开始今天的Go语言之旅吧! 附上: 喵了个咪的博客:w-blog.cn phalgo地址:github.com/wenzhenxi/phalgo Go语言圣经:docs.ruanjiadeng.com/

[喵咪软件推荐(2)]全球服务器测速工具speedtest-cli

[喵咪软件推荐(2)]全球服务器测速工具speedtest-cli w-blog博客 前言 在上一篇章中给大家介绍了全球国家信息国旗区号等一些全球国家新的库,今天也给大家介绍一个和全球化有关的软件,它的名字叫做speedtest-cli,直译成中文就是速度测试命令,那么究竟是测试什么速度呢? -> 请紧张继续往下看 附上: 喵了个咪的博客:w-blog.cn speedtest-cli GitHub :https://github.com/sivel/speedtest-cli 1.speedt