一、安装RabbitMQ

安装直接用docker安装,如果手动安装的话比较繁琐,还要安装erlang语言的环境。在安装有docker机器上执行官网提供的指令(https://www.rabbitmq.com/download.html):docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

安装好之后 浏览器访问15672端口,可以看到web管理端。默认的是用户名密码都是guest

 二、AMQP协议(Advanced message queue protocol 高级消息队列协议)核心概念和RabbitMQ整体架构

RabbitMQ是通过Erlang语言基于AMQP协议开发的。erlang语言常用于交换机上,因为它的高效,自然rabbitMQ也很高效了。

AMQP模型描述了一套模块化的组件以及这些组件之间进行连接的标准规则,核心概念:
server:服务,又称broker,接受客户端连接,对外提供amqp实体服务

connection:连接,客户端与server的连接
channel:网络通道,几乎所有的操作都是在channel中进行的,是进行消息对象的通道,客户端可以建立多个通道,每一个channel表示一个会话任务

virtual host:虚拟主机,是一个逻辑上的概念,一个虚拟主机中可以包含多个exhange 和 message queue但是一个虚拟主机中不能有名称相同的exchange 和 message queue
 
exchange:接收发布应用程序发送的消息,并根据一定的规则将这些消息路由到消息队列
 
message queue:消息队列,存储消息,直到这些消息被消费者安全处理完为止
 
binding:定义了exchange和message queue之间的关联,提供路由规则,包含route_key
 
route_key:路由key ,作用是在交换机上通过route_key来把消息路由到某个队列上
 
RabbitMQ整体架构:
 

这些概念在rabbitMQ的web控制台都可以看见:

三、交换机详解
1.交换机属性:
name:交换机名字
type:类型:direct,topic,fanout,headers
durability:是否需要持久化

autodelete: 假如没有队列绑定到该交换机,那么该交换机会自动删除
Internal: 当前交换机是否用户rabbitmq内部使用不常用,默认为false
argurements: 扩展参数,用户扩展AMQP定制化协议
 
2.直连交换机:direct exchange  消息投递时的key与队列绑定routekey完全相同的队列上面
 
3.主题交换机:topic exchange 投递消息是可以进行key的匹配,#匹配多个单词,*匹配一个单词(用.隔开),比如队列A绑定的routekey:study.#。投递消息时设置的routekey.abc或者routekey.abc.def都可以投递到队列A上面;队列B设置的routekey:study.*,那么就只有routekey.abc可以投递到队列B
 
4.扇形交换机: fanout exchange 不会进行routekey的匹配,只要是该交换机的队列都会被投递。因为不会进行路由字符串的匹配,所以这种交换的消息投递是最快的
 
5.头部交换机:headers exchange  投递的消息头里面有一个特殊的key:“x-match”,有两个值:all(默认),发送消息的header里面的所有key都对应,才投递;any,任意一个对应就投递
 
 
 

RabbitMQ(1)---基本概念的更多相关文章

  1. 通过实例理解 RabbitMQ 的基本概念

    先说下自己开发的实例. 最近在使用 Spring Cloud Config 做分布式配置中心(基于 SVN/Git),当所有服务启动后,SVN/Git 中的配置文件更改后,客户端服务读取的还是旧的配置 ...

  2. 快速掌握RabbitMQ(一)——RabbitMQ的基本概念、安装和C#驱动

    1 RabbitMQ简介 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现,官网地址:http://www.rabbitmq.com.Ra ...

  3. RabbitMQ安装|使用|概念|Golang开发

    搬砖的陈大师版权所有,转载请注明:http://www.lenggirl.com/tool/RabbitMQ.html 手册:http://www.rabbitmq.com/getstarted.ht ...

  4. RabbitMQ 基础类和概念讲解

    转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼. ...

  5. RabbitMQ(1) 核心概念

    消息中间价 消息中间价,也称消息队列,是分布式式系统中常用的中间价. 通过消息中间价传递消息,使得各个子系统解耦,异步通信. 目前业界有许多消息队列的实现,如RabbitMQ.Kafka.Active ...

  6. RabbitMQ的基本概念

    1:基本概念 ConnectionFactory(连接工厂): 生产Connection的的工厂 Connection(连接):是RabbitMQ的socket的长链接,它封装了socket协议相关部 ...

  7. RabbitMQ的基本概念与原理(一)

      1.什么是MQ? MQ全称为Message Queue, 顾名思义,即消息队列,它是一种应用程序对应用程序的通信方法.MQ是消费-生产者模型的一个典型的代表,生产者不断的往消息队列中不断写入消息, ...

  8. RabbitMq学习笔记——概念

    1.RabbitMQ简介 MQ全称为Message Queue(消息队列),是一种“应用程序”<—>“应用程序”的通信方法.MQ是一个典型的“消费”<—>“生产者”模型的代表, ...

  9. RabbitMQ 笔记-基本概念

    ConnectionFactory.Connection.Channel ConnectionFactory.Connection.Channel,这三个都是RabbitMQ对外提供的API中最基本的 ...

随机推荐

  1. Image Filter and Recover

    这是CS50的第四次大作业,顺便学习了图像的入门知识. 基础 黑白图(bitmap)的每个像素点只能取值0/1,1代表白色,0代表黑色. 常见的图片格式有JPEG/PNG/BMP,这些格式都支持RGB ...

  2. ACM算法--枚举方法(指数枚举,组合枚举)模板

    // 递归实现指数型枚举 vector<int> chosen; void calc(int x) { if (x == n + 1) { for (int i = 0; i < c ...

  3. postman(参数化)

    一.参数化 1.新建csv文件 2.csv文件中输入变量名和参数 3.postman中新增接口,并设置变量 4.选择进入runner页面 方法一 方法二 5.导入参数化csv格式文件,点击run It ...

  4. SQL 文件导入数据库

    1.首先通过 xshell 连接数据库服务器,执行命令 mysql -u root -p 命令,按照提示输入密码,连接上数据库 2.在连接终端上执行命令 create database JD_Mode ...

  5. redis系列之3----redis高级应用(主从、事务与锁、持久化)

    文章主目录 安全性设置 主从复制 事务与锁 持久化机制 发布以及订阅消息 上文<详细讲解redis数据结构(内存模型)以及常用命令>介绍了redis的数据类型以及常用命令,本文我们来学习下 ...

  6. D. Ehab the Xorcist(纯构造方法)

    \(如果觉得下面难以理解,可以去这里看一种较为简单的解法\):saf \(这个题嘛,首先要明确异或的性质:相同为0,不同为1.\) \(举个例子,我们来构造u=15和v=127的情况\) \(注意到, ...

  7. 搜索+简单dp

    前言:即使是简单的递归,在复杂度过高时也可以使用简单的dp. 一般有两种情况,一是利用dp思想求最优子结构进行搜索剪枝,二是利用搜索进行dp数组的填充. 例题一.hdu1978 题目大意:这是一个简单 ...

  8. IDEA中如何使用debug调试项目 一步一步详细教程

    转载该文章:https://blog.csdn.net/yxl_1207/article/details/80973622 一.Debug开篇 首先看下IDEA中Debug模式下的界面. 如下是在ID ...

  9. 送你一份Redis书单,以后使用缓存的问题不用再问我啦!

    点击蓝色"程序员书单"关注我哟 加个"星标",每天带你读好书!

  10. Spring官网阅读(五)BeanDefinition(下)

    上篇文章已经对BeanDefinition做了一系列的介绍,这篇文章我们开始学习BeanDefinition合并的一些知识,完善我们整个BeanDefinition的体系,Spring在创建一个bea ...