RabbitMQ详解(一)------简介与安装(Docker)
RABBITMQ详解(一)------简介与安装(DOCKER)
刚刚进入实习,在学习过程中没有接触过MQ,RabbitMQ 这个消息中间件,正好公司最近的项目中有用到,学习了解一下.
首先什么是MQ:
MQ(message queue) : MQ是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求。
MQ基本概念:
消息(Message)
消息是MQ中最小的概念,本质上就是一段数据,它能被一个或者多个应用程序所理解,是应用程序之间传递的信息载体.
队列(Queue)
本地队列
本地队列按照功能可划分为初始化队列,传输队列,目标队列和死信队列.
初始化队列用作消息触发功能.
传输队列只是暂存待传的消息,条件许可的情况下,通过管道将消息传送到其他队列管理器.
目标队列是消息的目的地,可以长期存放消息.
如果消息不能送达目标队列,也不能再路由出去,则被自动放入死信队列保存.
别名队列远程队列
只是一个队列定义,用来指定远程队列管理器的队列.使用了远程队列,程序就不需要知道目标队列的位置.
模型队列
模型队列定义了一套本地队列的属性结合,一旦打开模型队列,队列管理器会按照这些属性动态地创建出一个本地队列.
队列管理器(Queue Manager)
队列管理器是一个负责向应用程序提供消息服务的机构,如果把队列关系器比作数据库,那么队列就是其中的一张表.
通道(Channel)
通道是两个管理器之间的一种单向点对点的通信连接,如果需要双向交流,可以建立一对通道.
监听器(Listener)
MQ产品的特性:
可靠性传输
对于应用来说,只要成功把数据提交给消息中间件,那么关于数据可靠传输的问题就由消息中间件来负责.
不重复传输
不重复传输就是断点续传的功能,特别适合网络不稳定的环境,节约网络资源.
异步性传输
异步性传输是指,接受消息双方不必同时在线,具有脱机能力和安全性.
消息驱动
接到消息后主动通知消息接收方.
支持事务
目前MQ也广泛被一些企业用于分布式事务的同步.
常用的场景:
消息通道
消息总线机制
在如今的SOA架构或者微服务架构中,普遍使用.各个服务之间的通信,可以确保数据的一致性.
常见的MQ对比:
RabbitMQ
话题回归.RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统.它遵循Mozilla Public License开源协议,采用Erlang实现的工业级消息队列(MQ)服务器.
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制.
开源.
使用Erlang语言编写,这是一种面向并发的编程语言,目的是创造一种可以应对大规模并发活动的编程语言和运行环境.
安装
安装Docker.
Docker搜索Rabbitmq镜像.
- docker search rabbitmq
我们选择官方版本的,也就是第一个.通过这个镜像创建的容器需要我们额外打开web management的插件,若不想手动开启,可下载 rabbitmq/management
- docker pull rabbitmq
- docker pull rabbitmq
镜像下载后,通过该镜像创建一个容器.
- docker run -d --hostname my-rabbit -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 4369:4369 -v $PWD/rabbitmq-data:/var/rabbitmq/lib --name my_rabbitmq rabbitmq:latest
参数介绍:
-d:后台运行容器.
--hostname:指定主机名.
-p:指定端口映射.
-v:文件目录映射.
--name:定义容器名称.
查看日志.
- docker logs my_rabbitmq
- docker logs my_rabbitmq
如果使用的镜像为rabbitmq/management,到此步可直接浏览器访问localhost:15672;若使用rabbitmq镜像,我们需要进入docker,开启rabbitmq-management插件.
- docker exec -it my_rabbitmq /bin/bash
ls
可以看到有plugins插件的目录,我们需要用到的插件都在里面,使用命令即可开启插件.
- cd plugins
rabbitmq-plugins enable rabbitmq_management
- docker exec -it my_rabbitmq /bin/bash
这样,我们在本地就可以打开浏览器访问localhost:15672,便可以看到Rabbit的页面了.其中用户名和密码都是guest.
RabbitMQ详解(一)------简介与安装(Docker)的更多相关文章
- .Net使用RabbitMQ详解 转载http://www.cnblogs.com/knowledgesea/p/5296008.html
.Net使用RabbitMQ详解 序言 这里原来有一句话,触犯啦天条,被阉割!!!! 首先不去讨论我的日志组件怎么样.因为有些日志需要走网络,有的又不需要走网路,也是有性能与业务场景的多般变化在其 ...
- Spring Boot(八):RabbitMQ详解
Spring Boot(八):RabbitMQ详解 RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多 ...
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- Hadoop 发行版本 Hortonworks 安装详解(二) 安装Ambari
一.通过yum安装ambari-server 由于上一步我们搭建了本地源,实际上yum是通过本地源安装的ambari-server,虽然也可以直接通过官方源在线安装,不过体积巨大比较费时. 这里我选择 ...
- 执行对象Statement、PreparedStatement和CallableStatement详解 JDBC简介(五)
执行对象是SQL的执行者,SQL是“安排好的任务”,执行对象就是“实际工作的人”. 执行对象有三种: Statement.PreparedStatement和CallableStatement,他们都 ...
- spring-boot(五) RabbitMQ详解 定时任务
学习文章来自:springboot(八):RabbitMQ详解 springboot(九):定时任务 RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分 ...
- RabbitMQ详解(三)------RabbitMQ的五种模式
RabbitMQ详解(三)------RabbitMQ的五种模式 1.简单队列(模式) 上一篇文章末尾的实例给出的代码就是简单模式. 一个生产者对应一个消费者!!! pom.xml 必须导入Rab ...
- 详解npm的模块安装机制
详解npm的模块安装机制 依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm ...
- RocketMQ详解(二)安装使用详解
专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...
随机推荐
- 寻找 IBatisNet 批量插入(批量复制) 的心路历程
1.IBatisNet本身就是一个比较早的ORM框架,再加上是从java iBatis移值过来的,其流行程度不是特别高资料也不是很多(一年前),不过最近好像搜索比较多了一些(可能是训练的结果吧) 2. ...
- 【技术开放日】msup携手HPE揭秘全球测试中心背后的12条技术实践
保证软件产品质量是软件测试永恒的目标. 以控制为出发点的传统IT时代正在快速的向以激活生产力为目的的移动互联时代转变.这不仅是技术的升级,更是思想意识的巨大变革,也对软件技术的发展带来的更高的要求和更 ...
- NLP常用语料集合
常用语料资源 下面提供一些网上能下载到的中文的好语料,供研究人员学习使用.(1).中科院自动化所的中英文新闻语料库 http://www.datatang.com/data/13484中文新闻分类语料 ...
- HDU-2680 Choose the best route 单向边+反向dijkstra
https://vjudge.net/problem/HDU-2680 题意:以起始点 终点 长度 给出一个图,已知可以从w个起点出发,求从任一起点到同一个终点s的最短路径.注意是单向边.m<1 ...
- bzip2 zip 压缩后体积比 0.8:1
1. 对.bz2 后缀文件 跳过不处理 2.逐行同字段的json文件,压缩后大小为原文件的12.81% 测试文件近似认为为逐行json文本数据,没有进行多文件重复测试,没有统计时间: {"u ...
- Spring中,使用Java配置的方式进行依赖注入
之前用spring的时候,只知道使用xml的方式,和使用注解的方式,却一直不知道在spring中,还可以使用Java类的方式进行配置.使用Java类的方式,就可以取代xml和注解.使用Java配置是S ...
- short url短链接原理
一.什么是短链接 含义:就是把普通网址,转换成比较短的网址.比如:http://t.cn/RlB2PdD 这种,比如:微博:这些限制字数的应用里都用到这种技术. 优点:短.字符少.美观.便于发布.传播 ...
- mac 10.12显示隐藏文件
macOS Sierra 10.12版本 显示隐藏文件 1.显示隐藏文件 打开Terminal 输入:defaults write com.apple.finder AppleShowAllFil ...
- Netty 使用经验总结(一)
1: Netty 4的线程模型转变 在Netty 3的时候,upstream是在IO线程里执行的,而downstream是在业务线程里执行的.比如netty从网络读取一个包传递给你的handler的时 ...
- 带宽bandwidth,也叫频宽
1.两种意义 (1)在数字设备中,带宽通常以bps(bit per second)或bit/s或b/s表示. (2)在模拟设备中,带宽通常以每秒传送周期或赫兹 (Hz)来表示.如传送模拟信号(连续变化 ...