RabbitMQ系列(二)--基础组件
声明:对于RabbitMQ的学习基于某课网相关视频和《RabbitMQ实战指南》一书,后续关于RabbitMQ的博客都是基于二者
一、什么是RabbitMQ
RabbitMQ是开源代理和队列服务器,通过普通协议在不同的应用之间共享数据,使用Erlang编写(Erlang进行数据交换的性能很好,
和原生socket一样好的延迟响应效果),基于AMQP协议
二、AMQP
AMQP高级消息队列协议:具有现代特征的二进制协议,和JMS有点像,模型如下:

AMQP核心概念
1、Server:Broker,接受client连接,实现AMQP实体服务
2、Connection:应用程序和Broker的网络连接
3、Channel:网络信道,读写都是在Channel中进行(NIO的概念),包括对MQ进行的一些操作(例如clear queue等)都是在Channel中进行,
客户端可建立多个Channel,每个Channel代表一个会话任务
4、Message:由properties(有消息优先级、延迟等特性)和Body(消息内容)组成
5、Virtual host:用于消息隔离(类似Redis 16个db这种概念),最上层的消息路由,一个包含若干Exchange和Queue,同一个里面Exchange
和Queue的名称不能存在相同的。
6、Exchange:Routing and Filter
7、Binding:把Exchange和Queue进行Binding
8、Routing key:路由规则
9、Queue:物理上存储消息
三、哪些大厂在使用RabbitMQ,为什么?
滴滴、美团、头条、去哪儿。。。。都再使用RabbitMQ
原因:
1、开源、性能优秀、能保证稳定性,提供可靠性消息投递模式confirm、返回模式return,和springAMQP完美整合、API丰富
2、集群模式丰富,表达式配置,HA模式,镜像队列模式
3、保证数据不丢失的前提下做到高可靠性、高可用性
四、RabbitMQ基础组件
1、Exchange:
如果不指定Exchange的话,RabbitMQ默认使用,(AMQP default)注意一下,需要将routing key等于queue name相同
2、name、type:
fanout(效率最好,不需要routing key,routing key如何设置都可以)、direct、topic(#一个或多个,*一个)、headers
3、Auto Delete:
当最后一个Binding到Exchange的Queue删除之后,自动删除该Exchange
4、Binding:
Exchange和Queue之间的连接关系,Exchange之间也可以Binding
5、Queue:
实际物理上存储消息的
6、Durability:
是否持久化,Durable:是,即使服务器重启,这个队列也不会消失,Transient:否
7、Exclusive:
这个queue只能由一个exchange监听restricted to this connection,使用场景:顺序消费
8、Message:
由properties(有消息优先级、延迟等特性)和Body(Payload消息内容)组成,还有content_type、content_encoding、priority
correlation_id、reply_to、expiration、message_id等属性
五、安装
本人很早之前在centos安装过了,具体步骤都忘了,大家可以百度一下,有一大堆呢
需要注意:注意rabbitMQ和erlang版本的对应,而且服务器的host name不要瞎改,当初RabbitMQ一直启动报错,就是这个原因,搞了两天,真的蛋疼
先要确定erlang安装成功,然后按照RabbitMQ
浏览器可视化工具:rabbitmq-plugins enable rabbitmq_management 用户名、密码:guest guest
也可以使用在服务器上安装Docker,之后通过Docker安装RabbitMQ,简单到令人发指,我的另一个阿里云上面就是通过Docker安装的
可视化界面:通过http://ip:15672访问

RabbitMQ系列(二)--基础组件的更多相关文章
- 在Node.js中使用RabbitMQ系列二 任务队列
在上一篇文章在Node.js中使用RabbitMQ系列一 Hello world我有使用一个任务队列,不过当时的场景是将消息发送给一个消费者,本篇文章我将讨论有多个消费者的场景. 其实,任务队列最核心 ...
- Spring源码系列(二)--bean组件的源码分析
简介 spring-bean 组件是 Spring IoC 的核心,我们可以使用它的 beanFactory 来获取所需的对象,对象的实例化.属性装配和初始化等都可以交给 spring 来管理. 本文 ...
- RabbitMQ系列二(构建消息队列)
从AMQP协议可以看出,MessageQueue.Exchange和Binding构成了AMQP协议的核心.下面我们就围绕这三个主要组件,从应用使用的角度全面的介绍如何利用RabbitMQ构建消息队列 ...
- MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化
上篇文章中 我们已经创建了EF4.1基于code first的例子 有了数据库 并初始化了一些数据 今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...
- rabbitmq系列二 之工作队列
---恢复内容开始--- 1.工作队列的简介 在上一篇中,我们已经写了一个从已知队列中发送和获取消息的程序,在这里,我们创建一个工作队列(work queue), 会发送一些耗时的任务给多个工作者.模 ...
- 玩耍Hibernate系列(二)--基础知识
Hibernate思维导图 Hibernate映射 关于hibernate的映射要说明的一点就是关于ID的访问权限,peroperty以及field的区别: 表的主键在内存中对应一个OID对象描述 ...
- Spring源码系列(三)--spring-aop的基础组件、架构和使用
简介 前面已经讲完 spring-bean( 详见Spring ),这篇博客开始攻克 Spring 的另一个重要模块--spring-aop. spring-aop 可以实现动态代理(底层是使用 JD ...
- SQL Server 2008空间数据应用系列二:空间索引(Spatial Index)基础
原文:SQL Server 2008空间数据应用系列二:空间索引(Spatial Index)基础 在前一篇博文中我们学习到了一些关于地理信息的基础知识,也学习了空间参照系统,既地球椭球体.基准.本初 ...
- DocX开源WORD操作组件的学习系列二
DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...
随机推荐
- 99_leetcode_Best Time to Buy and sell Stock
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- Python爬虫开发【第1篇】【HTTP与HTTPS请求与响应】
一.HTTP.HTTPS介绍 HTTP协议(超文本传输协议):一种发布.接收HTML页面的方法 HTTPS协议:简单讲是HTTP安全版,在HTTP下加入SSL层 SSL(安全套接层),用于WEB的安全 ...
- uclibc,eglibc,glibc之间的区别和联系【转】
本文转载自:https://www.crifan.com/relation_between_uclibc_glibc_eglibc/ [glibc,uclibc,eglibc的简介] 1.Glibc ...
- luogu3942将军令
https://www.zybuluo.com/ysner/note/1302132 题面 在大小为\(n\)的树上选择尽量少的点,使得所有未选择的点距离选择了的点小于等于\(k\). \(n\leq ...
- FreeMarker:目录
ylbtech-FreeMarker:目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http://yl ...
- 一句powershell调用mimikatz抓密码
mimikatz神器大家都知道吧,可以抓取系统内的明文密码,但是平时我们测试的时候需要把mimikatz的几个文件上传到目标系统上面,然后再手工执行几个命令才能搞定,今天无意访问一个大神的博客,发现其 ...
- hdu1213 并查集不压缩
题意:题意:一个人请人吃饭,相互认识的朋友在一张桌子,相互认识的朋友的意思是如果A认识B,B认识C,那么A.B.C是朋友,对于每组输入输出桌子的张数. Sample Input 2 5 3 1 2 2 ...
- 牛客OI周赛2-提高组
A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...
- codevs1669(dfs)子集和目标值
1692 子集和的目标值 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 给定n个整数in和目标值T,求某一非空子集 ...
- ngCordova插件说明
转载自 http://my.oschina.net/u/1416844/blog/495026 参 考http://blog.csdn.net/superjunjin/article/details/ ...