java架构之路-(MQ专题)RabbitMQ安装和基本使用
RabbitMQ安装
我这里安装是使用阿里云的CentOS7.5来安装的,使用CentOS版本低于7的可能会报错。
1.安装rabbitmq所需要的依赖包
输入$ yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc- c++ kernel-devel m4 ncurses-devel tk tc xz
2.下载安装包
$ wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
$ wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
$ wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
3.安装服务命令
#第一步:安装erlang语言环境
$ rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
#第二步:安装socat加解密软件
$ rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
#第三步:最后安装rabbitmq
$ rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
4.修改配置文件
#第一步:查找rabbit.app,并编辑改文件
修改:loopback_users 中的 <<"guest">>,只保留guest(不修改只能通过localhost访问)
#第二步,修改rabbitmq-env.conf文件
$ vim /etc/rabbitmq/rabbitmq-env.conf
添加NODENAME=rabbit
5.安装插件,保证浏览器可以访问
$ rabbitmq-plugins enable rabbitmq_management
6.启动服务
$ rabbitmq-server start &
$ rabbitmqctl start_app
打开浏览器,输入我们的地址加端口15672,就可以看到我们的页面了,账号密码都是guest,登录进来是这样的。
说了这么多,还没说这个玩意是做什么的呢~!我第一次接触这个我也懵,完全不懂得是做什么的,我们先来看一下他能做什么吧。
RabbitMQ(暂不说实际场景,后面说场景,现在说场景怕自己给自己说懵圈了)主要是传递消息,就是什么意思呢,看个图。
简单来说就是这样的,通过我们的RabbitMQ将我们的数据发送到其它的服务器上去,让服务器得到我们的消息,有人会问为什么不直接传递,也可以直接传递,但是服务器达到一定数量,你是维护起来成本很高的,而且还需要可靠性的投递呢?代码实现起来是复杂的。
我们再来打开黑色的盒子看一下里面的东西。
我们来说几个名词,有图了更容易理解和记忆
1:server :又称为broker,接受客户端连接,实现amqp实体服务
2:exchange 交换机: 消息直接投递到交换机上,然后交换机根据消息的路由key 来路由到对应绑定的队列上
3:baingding: 绑定 exchange 与queue的虚拟连接,bingding中可以包含route_key
4:route_key 路由key ,他的作用是在交换机上通过route_key来把消息路由到哪个队列上
5:queue:队列,用于来保存消息的载体,有消费者监听,然后消费消息
就是我们的数据服务A通过网络通道,到达exchange交换机,通过路由route_key来把消息发送到哪个队列上,提供给我们的下游服务使用,左面的叫上游服务,右面的叫下游服务。
交换机exchange
这里还得继续说点枯燥的理论,交换机分为三种,直接交换机,扇形交换机和我们的Topic交换机,也叫做话题交换机。来举三个栗子。
直接交换机:
就是说,携带我们的routing Key通过我们的路由匹配到我们的routing Key就能到达我们的的Queue队列下,接收到我们发送过来的消息。
扇形交换机
通过我们的交换机,只要订阅了我们的交换机Exchange,就可以收到我们的消息。
Topic交换机
需要匹配我们的routing Key,这里的匹配模式有两种,*和#,*表示值匹配一层,一层就是..之间就叫做一层,比如啊,top.xiaocai.java,这时我们匹配top.xiaocai.*即可匹配到,而我们匹配top.*则不可匹配。再就是我们的#是全匹配,还是top.xiaocai.java的例子,这时我们匹配top.xiaocai.#即可匹配到,而我们匹配top.#也可匹配到。我们来看一个图
就是一个匹配的规则,其实不难的。
命令行
我们再来看几个命令行的使用
查看用户列表rabbitmqctl list_users,即可得到我们的用户列表了,前面是用户名,括号内的是用户对应的角色。
输入rabbitmqctl add_user xiaocaijava 123456,添加我们的新用户,前面xiaocaijava是用户名,123456是密码。
设置rabbitmq用户的角色 rabbitmqctl set_user_tags xiaocaijava administrator
输入rabbitmqctl delete_user xiaocaijava,即可删除我们的用户,注意别把guest用户删了,不然会很麻烦。
后面的我就大概说一下,不是很重要,会用即可。
为用户设置权限: rabbitmqctl set_permissions -p <虚拟机> <用户名> ".*" ".*" ".*"
列出用户权限: rabbitmqctl list_user_permissions xiaocai
清除用户权限 rabbitmqctl clear_permissions -p <虚拟机> <用户名>
修改用户密码 rabbitmqctl change_password 用户名 新密码
虚拟主机操作
rabbitmqctl add_vhost /cloudmall 增加一个虚拟主机
rabbitmqctl list_vhosts; 查看所有的虚拟主机
rabbitmqctl list_permissions -p /cloudmall查看虚拟主机的权限
rabbitmqctl delete_vhost /cloudmall 删除虚拟主机
操作队列命令
rabbitmqctl list_queues 查询所有队列
rabbitmqctl -p vhostpath purge_queue blue 清除队列消息
今天只是简单了解一下我们的RabbitMQ,后面会详细的去说RabbitMQ的作用和java相关的使用。
最进弄了一个公众号,小菜技术,欢迎大家的加入
java架构之路-(MQ专题)RabbitMQ安装和基本使用的更多相关文章
- [转帖]java架构之路-(面试篇)JVM虚拟机面试大全
java架构之路-(面试篇)JVM虚拟机面试大全 https://www.cnblogs.com/cxiaocai/p/11634918.html 下文连接比较多啊,都是我过整理的博客,很多答案都 ...
- java架构之路-(MQ专题)RocketMQ从入坑到集群详解
这次我们来说说我们的RocketMQ的安装和参数配置,先来看一下我们RocketMQ的提出和应用场景吧. 早在2009年,阿里巴巴的淘宝第一次提出了双11购物狂欢节,但是在2009年,服务器无法承受到 ...
- java架构之路(MQ专题)kafka集群配置和简单使用
前面我们说了RabbitMQ和RocketMQ的安装和简单的使用,这次我们说一下Kafka的安装配置,后面我会用几个真实案例来说一下MQ的真实使用场景.天冷了,不愿意伸手,最近没怎么写博客了,还请见谅 ...
- java架构之路-(Redis专题)Redis的主从、哨兵和集群
我们使用的redis,单机的绝对做不到高可用的,万一单机的redis宕机了,就没有备用的了,我们可以采用集群的方式来保证我们的高可用操作. 主从架构 大致就是这样的,一个主节点,两个从节点(一般两个就 ...
- java架构之路-(Redis专题)SpringBoot连接Redis超简单
上次我们搭建了Redis的主从架构,哨兵架构以及我们的集群架构,但是我们一直还未投入到实战中去,这次我们用jedis和springboot两种方式来操作一下我们的redis 主从架构 如何配置我上次已 ...
- java架构之路-(微服务专题)初步认识微服务与nacos初步搭建
历史演变: 以前我们都是一个war包,包含了很多很多的代码,反正我开始工作的时候做的就是这样的项目,一个金融系统,代码具体多少行记不清楚了,内部功能超多,但是实际能用到的不多,代码冗余超大,每次部署大 ...
- java架构之路-(分布式)初识zookeeper安装与参数详解
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...
- java架构之路-(Redis专题)聊聊大厂那些redis
上几次说了redis的主从,哨兵,集群配置,但是内部的选举一直没说,先来简单说一下选举吧. 集群选举 redis cluster节点间采取gossip协议进行通信,也就是说,在每一个节点间,无论主节点 ...
- java架构之路-(Redis专题)redis面试助力满分+
1.Redis支持的数据类型? 答:五种,在第一节redis相关的博客我就说过,String,Hash,List,Set,zSet,也就是我们的字符串,哈希,列表,集合,有序集合五种.结构图如下. 2 ...
随机推荐
- (七十二)c#Winform自定义控件-雷达图
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- Winform组合ComboBox和TreeView实现ComboTree
最近做Winform项目需要用到类似ComboBox的TreeView控件. 虽然各种第三方控件很多,但是存在各种版本不兼容问题.所以自己写了个简单的ComboTreeView控件. 下图是实现效果: ...
- jenkins自动化部署项目1--下载安装启动(linux)
前面是在windows上搭建jenkins环境,最近有同事要我帮忙在linux上搭建一套,因此在此记录下过程. 因为jenkins.msi只能在windows上运行安装,因此在linux上安装jenk ...
- 一步步构建.NET Core Web应用程序---仓储层,业务层的实现
前言 上一篇文章介绍了整个项目的结构,接下来向大家介绍一下 我的 仓储及业务层具体的实现思路,如果有更好的实现方式,希望大家及时指出!!! 构建过程 一,数据访问 首先在 DataProvider 中 ...
- Python学习笔记整理总结【Django】:中间件、CSRF、缓存
一.中间件 中间件是一类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法:在django项目的settings模块中,有一个 MIDDLEWARE 变量,其中每 ...
- 小鸟初学Shell编程(七)变量引用及作用范围
变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...
- let与var的区别
1.let作用域局限于当前代码块 文章中//后面的均为打印结果 代码1: { var str1 = "小花"; let str2 = "小明"; console ...
- 清空div中的数据
//清空div $("#divinput").val(""); $("#divimg").val(""); $(&quo ...
- jedis 2.9版本部分属性变更
1.控制一个pool可分配多少个jedis实例 “maxActive” -> “maxTotal” 2.最大建立连接等待时间.如果超过此时间将接到异常.设为-1表示无限制. “maxWait” ...
- Java8新特性——stream流
一.基本API初探 package java8.stream; import java.util.Arrays; import java.util.IntSummaryStatistics; impo ...