一、如何安装

https://www.cnblogs.com/756623607-zhang/p/11469962.html

二、基本概念介绍

·Broker:可以理解为消息队列服务器的实体,它是一个中间件应用,负责接收消息生产者的消息,然后将消息发送至消息接收者或者其他的Broker。

·Exchange:消息交换机,是消息第一个到达的地方,消息通过它指定的路由规则,分发到不同的消息队列中去。

·Queue:消息队列,消息通过发送和路由之后最终到达的地方,到达Queue的消息即进入逻辑上等待消费的状态。每个消息都会被发送到一个或多个队列。

·Binding:绑定,它的作用就是把Exchange和Queue按照路由规则绑定起来,也就是Exchange和Queue之间的虚拟连接。

·Routing Key:路由关键字,Exchange根据这个关键字进行消息投递。

·Virtual host:虚拟主机,它是对Broker的虚拟划分,将消费者、生产者和它们依赖的AMQP相关结构进行隔离,一般都是为了安全考虚。比如,我们可以在一个Broker中设置多个虚拟主机,对不同用户进行权限的分离。·Connection:连接,代表生产者、消费者、Broker之间进行通信的物理网络。

·Channel:消息通道,用于连接生产者和消费者的逻辑结构。在客户端的每个连接里,可建立多个Channel,每个Channel代表一个会话任务,通过Channel可以隔离同一连接中的不同交互内容。

·Producer:消息生产者,制造消息并发送消息的程序。
·Consumer:消息消费者,接收消息并处理消息的程序。

消息投递到队列的整个过程大致如下:

  1. 客户端连接到消息队列服务器,打开一个Channel。

  2. 客户端声明一个Exchange,并设置相关属性。

  3. 客户端声明一个Queue,并设置相关属性。

  4. 客户端使用Routing Key,在Exchange和Queue之间建立好绑定关系。

  5. 客户端投递消息到Exchange。

  6. Exchange接收到消息后,根据消息的Key和已经设置的Binding,进行消息路由,将消息投递到一个或多个Queue里。

Exchange也有几种类型。

  1. Direct交换机:完全根据Key进行投递。比如,绑定时设置了Routing Key为abc,那么客户端提交的消息,只有设置了Key为abc的才会被投递到队列。

  2. Topic交换机:对Key进行模式匹配后进行投递,可以使用符号#匹配一个或多个词,符号*匹配正好一个词。比如,abc.#匹配abc.def.ghi,abc.*只匹配abc.def。

  3. Fanout交换机:不需要任何Key,它采取广播的模式,一个消息进来时,投递到与该交换机绑定的所有队列。

RabbitMQ支持消息的持久化,也就是将数据写在磁盘上。为了数据安全考虑,大多数情况下都会选择持久化。消息队列持久化包括3个部分:

  1. Exchange持久化,在声明时指定durable=>1。

  2. Queue持久化,在声明时指定durable=>1。

  3. 消息持久化,在投递时指定delivery_mode=>2(1是非持久化)。

如果Exchange和Queue都是持久化的,那么它们之间的Binding也是持久化的。如果Exchange和Queue两者之间有一个是持久化的,一个是非持久化的,就不允许建立绑定。

最新文章

  1. 解决 android 高低版本 webView 里内容 自适应屏幕的终极方法
  2. 源码升级安装python
  3. git入门网站
  4. Photoshop CS4序列号过期的问题
  5. 实例源码--Android简单音乐播放器源码
  6. js 实现 di
  7. 浅析JQuery中的html(),text(),val()区别
  8. [Swust OJ 85]--单向公路(BFS)
  9. Codeforces 392C Yet Another Number Sequence (矩阵快速幂+二项式展开)
  10. ubuntu下进入root错误解决方法
  11. AndroidTV端的requestFocus()问题
  12. 转:[kipmi0]进程导致系统负载高
  13. Vue(小案例_vue+axios仿手机app)_图文列表实现
  14. .net core 2.0 配置Session
  15. macOS Sierra 10.12.6 odoo 10.0 开发环境配置
  16. jQuery-设计模式
  17. 小米note3的开发者选项在哪里?怎么进入开发者模式?如何显示布局边界?
  18. Flsk-Werkzeug-请求参数获取备忘
  19. 用JavaScript写的动态表格
  20. onethink重新安装后,还原数据库后,登陆不了解决办法!

热门文章

  1. hdu 6620 Just an Old Puzzle(N数码问题)
  2. css规范思维导图(仅限于自己)
  3. 转载:深度学习在NLP中的应用
  4. haproxy 配置文件详解 之 defaults
  5. 深度学习之TCN网络
  6. c++隐式转换(implicit conversion)
  7. 【ASP.NET Core分布式项目实战】(六)Gitlab安装
  8. 热点Key问题的发现与解决
  9. 关联分析-MIC
  10. 如何减少 webpack 构建 vue 项目的编译时间