docker安装rocketmq_RabbitMQ 介绍amp;安装
什么是MQ
消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,只不过队列中存放的内容是message而已。
其主要用途:不同进程Process/线程Thread之间通信。
为什么会产生消息队列?有几个原因:
不同进程(process)之间传递消息时,两个进程之间耦合程度过高,改动一个进程,引发必须修改另一个进程,为了隔离这两个进程,在两进程间抽离出一层(一个模块),所有两进程之间传递的消息,都必须通过消息队列来传递,单独修改某一个进程,不会影响另一个;
不同进程(process)之间传递消息时,为了实现标准化,将消息的格式规范化了,并且,某一个进程接受的消息太多,一下子无法处理完,并且也有先后顺序,必须对收到的消息进行排队,因此诞生了
MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka,以及阿里开源的RocketMQ。
RabbitMQ简介
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
AMQP协议中间的几个重要概念
Server:接收客户端的连接,实现AMQP实体服务。
Connection:连接,应用程序与Server的网络连接,TCP连接。
Channel:信道,消息读写等操作在信道中进行。客户端可以建立多个信道,每个信道代表一个会话任务。
Message:消息,应用程序和服务器之间传送的数据,消息可以非常简单,也可以很复杂。由Properties和Body组成。Properties为外包装,可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body就是消息体内容。
Virtual Host:虚拟主机,用于逻辑隔离。一个虚拟主机里面可以有若干个Exchange和Queue,同一个虚拟主机里面不能有相同名称的Exchange或Queue。
Exchange:交换机,接收消息,按照路由规则将消息路由到一个或者多个队列。如果路由不到,或者返回给生产者,或者直接丢弃。RabbitMQ常用的交换机常用类型有direct、topic、fanout、headers四种,后面详细介绍。
Binding:绑定,交换机和消息队列之间的虚拟连接,绑定中可以包含一个或者多个RoutingKey。
RoutingKey:路由键,生产者将消息发送给交换机的时候,会发送一个RoutingKey,用来指定路由规则,这样交换机就知道把消息发送到哪个队列。路由键通常为一个“.”分割的字符串,例如“com.rabbitmq”。
Queue:消息队列,用来保存消息,供消费者消费。
VirtualHost
在RabbitMQ中可以虚拟消息服务器VirtualHost,每个VirtualHost相当于一个相对独立的RabbitMQ服务器,每个VirtualHost之间是相互隔离的。exchange、queue、message不能互通。
在RabbitMQ中无法通过AMQP创建VirtualHost,可以通过以下命令来创建。
rabbitmqctl add_vhost [vhostname]
也可以通过WEB管理插件来创建。
ConnectionFactory、Connection、Channel
ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。ConnectionFactory为Connection的制造工厂。
Channel是我们与RabbitMQ打交道的最重要的一个接口,我们大部分的业务操作是在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等。
我们完全可以直接使用 Connection 就能完成信道的工作,为什么还要引入信道呢?
试想这样一个场景, 一个应用程序中有很多个线程需要从 RabbitMQ 中消费消息,或者生产消息,那么必然需要建立很多个 Connection,也就是许多个 TCP 连接。然而对于操作系统而言,建立和销毁 TCP 连接是非常昂贵的开销,如果遇到使用高峰,性能瓶颈也随之显现。RabbitMQ 采用 TCP 连接复用的方式,不仅可以减少性能开销,同时也便于管理。
下图是AMQP的协议模型:
Exchange 常用交换机
RabbitMQ常用的交换机类型有fanout、direct、topic、headers四种。
Fanout Exchange
该类型不处理路由键,会把所有发送到交换机的消息路由到所有绑定的队列中。优点是转发消息最快,性能最好。
Direct Exchange
该类型的交换机将所有发送到该交换机的消息被转发到RoutingKey指定的队列中,也就是说路由到BindingKey和RoutingKey完全一致的队列中。
Topic Exchange
该类型的交换机将所有发送到Topic Exchange的消息被转发到所有RoutingKey中指定的Topic的队列上面。
Exchange将RoutingKey和某Topic进行模糊匹配,其中“*”用来匹配一个词,“#”用于匹配一个或者多个词。例如“com.#”能匹配到“com.rabbitmq.oa”和“com.rabbitmq”;而”com.*“只能匹配到“com.rabbitmq”。
Headers Exchange
该类型的交换机不依赖路由规则来路由消息,而是根据消息内容中的headers属性进行匹配。headers类型交换机性能差,在实际中并不常用。
安装 RabbitMQ
yum
进入/etc/yum.repos.d/
文件夹
创建rabbitmq-erlang.repo 文件,内容如下
[rabbitmq-erlang]name=rabbitmq-erlangbaseurl=https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7gpgcheck=1gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.ascrepo_gpgcheck=0enabled=1
创建rabbitmq.repo 文件,内容如下
[bintray-rabbitmq-server]name=bintray-rabbitmq-rpmbaseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/8/gpgcheck=0repo_gpgcheck=0enabled=1
yum install rabbitmq-server
使用Docker进行安装RabbitMQ。
进入“官方下载地址”,选择使用Docker安装,前往“dockerhub”查看镜像。
拉取镜像和启动
docker run -d --hostname my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.8.0-beta.4-management
查看镜像
[root@localhost ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/rabbitmq 3.8.0-beta.4-management d0f93d2b83f7 3 days ago 180 MB
打开浏览器访问localhost:15672
进行填写账号密码:默认账号密码都是guest.
运行
启用插件页面管理
rabbitmq-plugins enable rabbitmq_management
创建用户
rabbitmqctl add_user admin mypassword# 赋予权限rabbitmqctl set_user_tags admin administratorrabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
浏览器访问http://机器IP:15672打开管理界面,使用上一步配置好的admin账号登录
docker安装rocketmq_RabbitMQ 介绍amp;安装相关推荐
- Docker的简单介绍与安装(Windows10)
目录 1.什么是Docker 2.Docker的应用场景 3.Docker 的优点 4.Docker 架构 5.Doker安装 Win10 系统 开启 Hyper-V 1.安装 Toolbox 2.运 ...
- docker 技术的介绍和安装(一)
文章目录 一.文章参考 二.why Docker 软件开发环境搭建的问题 解决办法(虚拟机) 解决办法(Linux 容器) 虚拟机 VS linux 容器 三.linux 容器的封装技术 -- Doc ...
- docker第一章--介绍和安装
转载于:https://www.cnblogs.com/caiciadeliliang/p/10993278.html
- tengine简单安装_Tengine介绍和安装
Tengine特性 继承Nginx-1.6.2的所有特性,兼容Nginx的配置: 动态模块加载(DSO)支持.加入一个模块不再需要重新编译整个Tengine: 支持SO_REUSEPORT选项,建连性 ...
- 「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四) 上次说了fiddl ...
- Docker:基于ubuntu18.04的介绍,安装与使用 - 最新无死角
以下链接是个人关于深度学习环境搭建的所有链接,包含了各个框架: 深度学习环境搭建-史上最全无死角系列 有兴趣的朋友可以添加微信 17575010159 相互交流. 注意:本人编写该博客的时间为2020 ...
- docker介绍和安装以及常用命令
介绍 Docker是基于Go语言实现的云开源项目. 一次镜像,处处运行 传统的部署项目环境配置相当麻烦,换一台机器,就要重来一次,费力费时. Docker的主要目标是"一次镜像,随处运行&q ...
- Day15(Js入门、jquery入门、ajax入门、前后端分离开发跨域问题、linux环境准备、jdk_tomcat环境搭建、docker介绍及应用(docker安装、基本命令、安装tomcat))
js入门 js代码辅助 window–>preferences–>javaScript–>Content Assist .abcdefghijklmnopqrstuvwxyz alt ...
- 容器-Docker《一》介绍和安装
容器-Docker Docker资源 Docker官方英文资源: docker官网:http://www.docker.com Docker windows入门:https://docs.docker ...
最新文章
- wpf 加载本地html文件,c# – Wpf WebBrowser加载javascript
- c语言常用指令翻译,c语言常见专业词汇带翻译
- 程序员效率:如何合理的分解任务
- Delphi对话框初始地址InitialDir
- Redis进阶实践之十六 Redis大批量增加数据
- xss植入_前端安全之XSS攻击
- java异常处理思考题_java异常处理试题及答案
- Windows版本nginx
- [滤镜]的firefox兼容问题
- JQuery 使用技巧
- mui ajax的值php怎样获取,MUI.ajax是怎么获取数据的
- Golang 基础:接口使用、实现原理(eface iface)和设计模式
- STM32单片机驱动L298N
- 胆结石的发病原因有哪些?
- 从0开始搭建Hadoop2.x高可用集群(HDFS篇)
- 林业调查规划设计资质申办流程及要求?
- 宽带波束形成 恒定束宽波束形成 学习笔记
- 一篇带你了解如何使用纯前端类Excel表格构建现金流量表
- 500万相机芯片尺寸_相机常见感光芯片的几何尺寸
- 电脑流量监控软件监控局域网员工电脑流量使用情况
热门文章
- http2-stream-optima-prioritation
- 用chattr保护文件系统的安全
- 数据备份软件,BackBone,NetVault,网络存储备份,系统集成
- 机器学习项目实战----信用卡欺诈检测
- PSP DAILY软件功能说明书
- 软硬链接、文件删除原理、linux中的三种时间、chkconfig优化
- CC2431 代码分析③-忍辱负重的CC2430
- NES模拟器开发-CPU笔记
- Javascript模块规范(CommonJS规范AMD规范)
- the application has stopped unexpected。please try again