博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ系列(二)--基础组件
阅读量:3924 次
发布时间:2019-05-23

本文共 1396 字,大约阅读时间需要 4 分钟。

一、什么是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等属性

转载地址:http://idugn.baihongyu.com/

你可能感兴趣的文章
c++ web编程:写出你的CGI程序
查看>>
Linux RPM 命令参数使用详解 查看 rpm包依赖性
查看>>
xz压缩命令
查看>>
Mysql各种存储引擎对比总结(常用几种)
查看>>
java为我们已经提供了各种锁,为什么还需要分布式锁?
查看>>
一文带你理解mysql中的分区表和合并表(一个常见知识点)
查看>>
Redis5.0数据淘汰策略详解(最新版本,面试常问)
查看>>
为什么 MongoDB 索引选择B-树,而 Mysql 选择B+树(精干总结)
查看>>
面试官:说说 Springboot 中的 javaConfig(基于Spring5.2)
查看>>
你的钱为什么被转走,这篇文章告诉你答案(CSRF详解)
查看>>
JVM中的一个小知识点:深堆和浅堆的概念
查看>>
HashMap的负载因子初始值为什么是0.75?这篇文章以最通俗的方式告诉你答案
查看>>
详解java中一个面试常问的知识点-阻塞队列
查看>>
除了Thread和Runnable,你还知道第三种创建线程的方式Callable吗
查看>>
java线程面试题集锦(第一版本)
查看>>
记一次java中三元表达式的坑(避免踩坑)
查看>>
面试官:如何实现一个乐观锁(小白都能看得懂的代码)
查看>>
CopyOnWriteArrayList,一个面试中经常问到的冷门容器
查看>>
设计模式之桥接模式
查看>>
设计模式之组合模式
查看>>