一、如何安装

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两者之间有一个是持久化的,一个是非持久化的,就不允许建立绑定。

【RabbitMQ】RabbitMQ的安装以及基本概念的介绍的更多相关文章

  1. rabbitmq:centos7安装与python调用

    1.centos安装rabbitmq 官网下载或者yum list |grep rabbitmq搜索安装,官网是最新的版本 wget http://www.rabbitmq.com/releases/ ...

  2. rabbitmq 源码安装

    官网地址:rabbitmqhttp://www.rabbitmq.com/releases/rabbitmq-server/官网地址:erlanghttp://erlang.org/download/ ...

  3. Windows下当地RabbitMQ服务的安装

    Windows下本地RabbitMQ服务的安装 本文参考:刘若泽相关技术文档 当然这些内容页可以通过RabbitMQ官方网站获得. RabbitMQ配置说明手册 一.RaibbitMQ服务器配置 1. ...

  4. rabbitmq源码安装及配置文件管理

    rabbitmq 源码安装 官网地址:rabbitmq http://www.rabbitmq.com/releases/rabbitmq-server/ 官网地址:erlang http://erl ...

  5. RabbitMQ集群安装配置+HAproxy+Keepalived高可用

    RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...

  6. RabbitMQ学习笔记(1)----RabbitMQ简介与安装

    ·1. 什么是RabbitMQ? RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. 而AMQP协议则是指:即Advanced ...

  7. (二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念

    原文:(二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念 没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念. Rabbit ...

  8. (1)RabbitMQ简介与安装

    1.RabbitMQ简介 因为RabbitMQ是基于开源的AMQP协议来实现的,所以在了解MQ时候,首先我们来了解下AMQP协议.AMQP,即Advanced Message Queuing Prot ...

  9. 【RabbitMQ】CentOS安装RabbitMQ,及简单的Java客户端连接

    在CentOS安装 因Rabbit MQ使用Erlang,所以需要先安装Erlang,安装过程中可能会遇到种种问题,可参考CentOS 6.5安装Erlang/OTP 17.0.然后就可以安装MQ了. ...

随机推荐

  1. MYSQL:基于哈希的索引和基于树的索引有什么区别?

    B+树是一个平衡的多叉树.B+树从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动. 哈希索引采用一定的哈希算法,把键值换成新的哈希值,检索时不需要类似B+树那样从根节点逐级查找,只需一次哈希算法 ...

  2. 深入js系列-类型(对象)

    开篇 值的传递方式 1.值传递 表示传递过程中复制了值 2.引用传递 表示传递过程中传递的是值的引用 js的传递方式 值传递 看下面的例子 // 这里值传递很容易理解 var a = 1 var b ...

  3. 转载:cnn学习之卷积或者池化后输出的map的size计算

    相信各位在学习cnn的时候,常常对于卷积或者池化后所得map的的大小具体是多少,不知道怎么算.尤其涉及到边界的时候.   首先需要了解对于一个输入的input_height*input_widtht的 ...

  4. 特征值、特征向量与PCA算法

    一.复习几个矩阵的基本知识 1. 向量 1)既有大小又有方向的量成为向量,物理学中也被称为矢量,向量的坐标表示a=(2,3),意为a=2*i + 3*j,其中i,j分别是x,y轴的单位向量. 2)向量 ...

  5. 【技术博客】Laravel5.1文件上传单元测试

    Laravel5.1文件上传单元测试 作者:ZGJ 在软工第三阶段中,我彻底解决了上一阶段一直困扰我的文件上传单元测试问题,在这里做一个总结. 注:下文介绍中,方法一方法二实现简单但有一定的限制条件( ...

  6. django:CBV模式,源码解析

    非常好 DRF执行流程源码解析 https://www.cnblogs.com/suguangti/p/11120793.html https://www.cnblogs.com/haitaoli/p ...

  7. QuantLib 金融计算——基本组件之 ExchangeRate 类

    目录 QuantLib 金融计算--基本组件之 ExchangeRate 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件 ...

  8. Linux文件内容查看相关命令

    1.more命令 在Linux中,more命令是一个基于vi编辑器的文本过滤器,它能以全屏的方式按页显示文本文件的内容,more里面内置了一些快捷键. (1)命令语法 more(选项)(参数) (2) ...

  9. my first blog by cnblogs

    #include <stdio.h> int main() { printf("hello everyone."); ; } 上面为我的第一个C语言测试代码,仅供初学者 ...

  10. MySQL面试题及答案整理,史上最全!

    原文链接:https://juejin.im/post/5d351303f265da1bd30596f9 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐 ...