大家如果感兴趣,微信搜索「我是阿沐」关注我这枚有点神经但乐观的程序员。
希望小伙伴们通过阿沐的文章学习,知识存储量能有一点点的提升。

前言

当前文章大概是我两年前多(2018年上半年)在自己博客和简书等等社交平台发布的文章,目前准备同步到csdn这边,时间有点久远了有啥不足之处麻烦掘金的善良小伙伴指出不足之处!

之所以选择同步关于mq的几篇文章,主要是目前面试基本上都会涉及到消息队列kafkarabbitmqrocketmq,那么当时也是在公司配合运维搭建mq的集群以及项目代码类php+swool+mq的实现,消息量基本上亿级别,所以就搬迁这mq基础的知识文章。

好啦,开启mq之旅(后期应该会针对mq出一些实战场景的文章)!

Rabbitmq简介

  • server(broker):接受客户端连接,实现AMQP消息队列和路由功能的进程。

  • virtual host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个exchangequeue,但是权限控制的最小粒度是Virtual Host。

  • exchange:交换机,接受生产者发送的消息,并根据binding规则将消息路由给服务器中的队列。exchangeType决定了exchange路由消息的行为,例如,在RabbitMQ中,ExchangeType有header、direct、Fanout和Topic4种,不同类型的Exchange路由的行为是不一样的。

  • message queue:消息队列,用于存储还未被消费者消费的消息。(支持储存模式AMQP_DURABLEAMQP_PASSIVEAMQP_EXCLUSIVEAMQP_AUTODELETE)

  • message:由headerbody组成,header是由生产者添加的各种属性的集合,包括message是否被持久化、由哪个message 1ueue接受、优先级是多少等。而Body是真正需要传输的APP数据。

  • binding:binding绑定了exchange与message Queue关系。exchange在与多个message queue发生Binding后会生成一张路由表,路由表中存储着message queue所需消息的限制条件即binding key。当exchange收到message时会解析其header得到routing key,exchange根据routing key与exchange type将message路由到message queue。binding key由Consumer在binding exchange与message queue时指定,而routing key由Producer发送Message时指定,两者的匹配方式由exchange type决定。

  • Connection:连接,对于RabbitMQ而言,其实就是一个位于客户端和Broker之间的TCP连接

  • Channel:信道或者频道,仅仅创建了客户端到broker之间的连接后,客户端还是不能发送消息的。需要为每一个connection创建channel,AMQP协议规定只有通过channel才能执行AMQP的命令。一个connection可以包含多个channel。之所以需要channel,是因为TCP连接的建立和释放都是十分昂贵的,如果一个客户端每一个线程都需要与broker交互,如果每一个线程都建立一个TCP连接,暂且不考虑TCP连接是否浪费,就算操作系统也无法承受每秒建立如此多的TCP连接。RabbitMQ建议客户端线程之间不要共用channel,至少要保证共用channel的线程发送消息必须是串行的,但是建议尽量共用connection。

  • Command:AMQP的命令,客户端通过Command完成与AMQP服务器的交互来实现自身的逻辑。例如在RabbitMQ中,客户端可以通过publish命令发送消息,txSelect开启一个事务,txCommit提交一个事务。

安装Erlang

服务器版本:centos7.2 IP地址:192.168.153.130 官方安装地址:http://www.rabbitmq.com/install-rpm.html

因为rabbitMQ是Erlang语言编写的,所以我们首先需要安装Erlang

rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm
或者
yum install erlang

安装rabbitMQ-server服务端并开启服务

官网提供的安装方式:

rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.ascyum install rabbitmq-server-3.7.8-1.el7.noarch.rpm或者yum install rabbitmq-server 一直输入Y即可查看rabbitmq-server是否已经安装好了,能查到说明已经安装完成了。rpm -qa|grep rabbitmq[root@test ~]# rpm -qa|grep rabbitmqrabbitmq-server-3.3.5-34.el7.noarch[root@test ~]#

开启rabbit-server: systemctl start rabbitmq-server

查看状态:rabbitmqctl status

注意:这样虽然我们已经将rabbitmq的服务正常启动了,但是我们在物理机的浏览器中输入192.168.153.130:15672时,并不能连接,因为我们还没有配置维护插件和开启远程连接

rabbitmqctl 基础命令介绍

查看命令:#rabbitmqctl
[root@test ~]# rabbitmqctl

# rabbitmqctl list_queues
关闭应用
# rabbitmqctl stop_app启动应用,和上述关闭命令配合使用,达到清空队列的目的
# rabbitmqctl start_app清除所有队列
# rabbitmqctl reset更多用法及参数,可以执行如下命令查看
# rabbitmqctl
(1)首先关闭rabbitmq: rabbitmqctl stop_app
(2)还原: rabbitmqctl reset
(3)启动: rabbitmqctl start_app
(4)添加用户: rabbitmqctl add_user root root
(5)设置权限:rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
(6)查看用户: rabbitmqctl list_users
(7)删除用户:rabbitmqctl delete_user root
(8)修改密码:rabbitmqctl change_password root 123456
(9)清除密码:rabbitmqctl clear_password root

安装命令维护插件

执行此命令:rabbitmq-plugins enable rabbitmq_management 

设置配置文件,并开启用户远程访问:

1、新建配置文件 /etc 会默认生成一个 rabbitmq

2、安装后rabbitmq默认命令在 /usr/lib/rabbitmq/bin

vi /etc/rabbitmq/rabbitmq.conf
#默认用户名
default_user = guest#默认密码
default_pass = guest#远程用户访问
loopback_users = none然后重启rabbitmq:

开启浏览器web端访问

1、浏览器输入:`192.168.153.130:15672  -- 默认端口是15672 可修改配置文件2、默认账号密码:账号:guest    密码:guest

登录成功以后,显示界面

PHP安装rabbitmq扩展需要安装rabbitmq-c

1、安装rabbitmq-c在安装amqp之前还需要安装另外一个通讯扩展rabbitmq-c去github下载最新版本的源码包并解压缩,https://github.com/alanxz/rabbitmq-c/releases

最新版本链接:https://github.com/alanxz/rabbitmq-c/releases/download/v0.8.0/rabbitmq-c-0.8.0.tar.gz

PS:今天上去一看没想到版本已更新到v0.11.0

Rabbitmq—centos7安装rabbitmq教程 以及 PHP开启rabbitmq扩展!相关推荐

  1. centos7 安装rtl8821ce教程

    centos7 安装rtl8821ce教程 搜索到的教程都参差不齐,针对自己的安装经历自己写了一个,本人安装版本7.9 参考:Linux centos7升级内核(两种方法:内核编译和yum更新) ce ...

  2. 阿里云 Centos7 安装PostgreSQL教程

    阿里云 Centos7 安装PostgreSQL教程 1.选择版本 2. 选择平台 3. 选择架构 4. 安装repository RPM 5. 安装客户端包 6. 可选的服务端安装包 7. 可选的初 ...

  3. php 安装rabbitmq拓展_【RabbitMQ】——centos7安装rabbitmq教程 以及 PHP开启rabbitmq扩展...

    第一步:安装Erlang 因为rabbitMQ是Erlang语言编写的,所以我们首先需要安装Erlang rpm -Uvh http://www.rabbitmq.com/releases/erlan ...

  4. mqtt安装使用教程。(基于rabbitmq插件,docker部署,k8s部署,python教程)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Docker安装RabbitMQ配置MQTT 使用RabbitMQ作为MQTT服务端,Eclipse Paho作为客户端.宿主机系统为ubuntu16 ...

  5. centos7 安装 docker-ce 教程

    centos7安装docker-ce 1.下载docker-ce离线安装包(rpm包) 到阿里云仓库下载:下载链接(阿里云) 或者使用我已经下载好的版本(docker-ce-18.03.1.ce-1. ...

  6. Centos7安装Redis教程

    Centos7安装Redis 0.更新文件 yum update -y 这里会更新好多内容,需要等待一会. 1.下载redis [CSDN资源下载] https://redis.io/ 2.将压缩包放 ...

  7. 全网最简单 CentOS7 安装 EasyConnect 教程

    目录 前言 一.安装图形化界面 1.更新组件 2 .获取 X Window System 接口 3.安装KDE 二.安装远程桌面 1.检查 2.安装xrdp (全部Y完事) 3.启动服务,开机启动 三 ...

  8. RabbitMQ Centos7 安装以及使用

    1.Rabbit MQLinux 安装 Centos7 Yum安装socat # yum -y install socat 下载erlang软件包,本文使用erlang-19.0.4版本,下面给出下载 ...

  9. docker rabbitmq_使用Docker集成Rabbitmq与安装elasticsearch教程

    今天为大家分享,使用Docker-集成Rabbitmq,使用Docker-安装elasticsearch,Docker容器的备份与迁移教学! 使用Docker-集成Rabbitmq 使用Docker- ...

  10. CentOS7安装Docker教程(图文)

    文章目录 Docker 1. 检查是否支持docker 2. yum安装docker 3. 常用的一些docker命令 Docker Compose 1.Docker Compose介绍 2.Dock ...

最新文章

  1. epoll_data_t里面的void *ptr; int fd; u32; u64 分析
  2. Android中关于SQLite数据库的一些知识
  3. Linux-鸟菜-5-目录配置-FHS
  4. Kali Linux
  5. 提高数据中心空间使用率,助力数字新基建
  6. 一个链表创建、反转、打印的C语言代码
  7. Java_方法的调用①及案例
  8. IDEA设置取消自动显示参数提示
  9. (二分搜索)cable master
  10. office另存为pdf的加载项_pdf怎么转换成word?打工人必备的丛林法则
  11. ZZULIOJ 1055:兔子繁殖问题
  12. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (1) - 特性概述
  13. 小度回应天猫精灵:不要因为我们拿了第一就黑我们
  14. Linux环境运行Jmeter
  15. python3 表情符号编码
  16. Android 官方命令深入分析之android
  17. 『软件工程10』结构化系统分析:数据流图和字典案例分析
  18. Axure 画原型图
  19. 闭合曲线 网格坐标 matlab,MATLAB曲线绘制
  20. mysql 周平均值_SQL语句: 按周、月统计总值 和 平均值

热门文章

  1. TFS2012 权限设置
  2. 砍掉3721 reg
  3. Spark Event Log (一)概述
  4. SAP国际商品编码(EAN码)允许前导0增强
  5. python学习一点 快乐一点(2)乱序整数序列两数之和绝对值最小
  6. 苹果电脑无法自动修复计算机,苹果电脑没办法正常开机的解决方案
  7. 修复iPhone白苹果
  8. 为什么一个还没毕业的大学生能够把 IO 讲的这么好?
  9. sql server 2008新建视图时出现对象名无效
  10. SRVCC关键场景及Log分析