一、安装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. [svc]frp内网穿透

    什么是穿透 可以任意暴漏内网任何服务,加入你在你的办公网络有台pc,可以上网就可以了, 你可以在你电脑上安装各类服务器, 暴漏如80 22等端口, 注意 这可以暴漏到公网哦, 在出口不做任何nat情况 ...

  2. python的unittest框架中的assert断言

    unittest框架自带断言,如果想用assert断言,一定要引入unittest.TestCase框架才行,不然不会自动识别assert断言

  3. java的Timer定时器任务

    在项目开发中,经常会遇到需要实现一些定时操作的任务,写过很多遍了,然而每次写的时候,总是会对一些细节有所遗忘,后来想想可能是没有总结的缘故,所以今天小编就打算总结一下可能会被遗忘的小点: 1. pub ...

  4. 如何使用thrift 服务引擎组件

    在本文中将介绍如果通过thrift 组件集成到surging 微服务引擎中,然后可以选择dotnetty 或thrift作为服务远程调用RPC,也可以通过其它语言的thrift 调用surging 服 ...

  5. 自定义View实战

    PS:上一篇从0开始学自定义View有博友给我留言说要看实战,今天我特意写了几个例子,供大家参考,所画的图案加上动画看着确实让人舒服,喜欢的博友可以直接拿到自己的项目中去使用,由于我这个写的是demo ...

  6. 第五章:深入Python的dict和set

    第五章:深入Python的dict和set 课程:Python3高级核心技术 5.1 dict的abc继承关系 class Mapping(Collection): __slots__ = () &q ...

  7. Day_09【常用API】扩展案例6_将用户给定的字符串首个字符大写,并分别加上"set"和"get"输出

    定义如下方法public static String getPropertyGetMethodName(String property) (1)该方法的参数为String类型,表示用户给定的成员变量的 ...

  8. 一阶RC低通滤波器详解(仿真+matlab+C语言实现)

    文章目录 1 预备知识 2 simulink 仿真 3 simulink 运行结果 4 matlab实现 5 matlab运行结果 6 C语言实现 7 C语言运行结果 如果本文帮到了你,帮忙点个赞: ...

  9. 你真的知道C语言里extern "C" 的作用吗?

    经常在C语言的头文件中看到下面的代码: #ifdef __cplusplus extern "C" { #endif // all of your legacy C code he ...

  10. 基于R语言的航空公司客户价值分析

    分析航空公司现状 1.行业内竞争 民航的竞争除了三大航空公司之间的竞争之外,还将加入新崛起的各类小型航空公司.民营航空公司,甚至国外航空巨头.航空产品生产过剩,产品同质化特征愈加明显,于是航空公司从价 ...