分布式系统之消息中间件rabbitmq
既然要做分布式系统,就不得不说分布式消息通信系统。分布式系统的基础是各个分布式单元能够以各种方式互相通信,分布式消息中间件比较有名的开源实现有rabbitMQ,zeroMQ(库),ActiveMQ等,本篇先考察一下著名的消息中间件rabbitmq
rabbitmq在2010年4月被SpringSource收购,后者是vmware的一个部门,就是说,rabbitmq目前已经是vmware的了。
rabbitmq使用erlang语言编写,实现了AMQP协议。AMQP协议在04年中~06年中由摩根大通集团和iMatix公司开发,后来由AMQP工作组维护。最初用于金融领域,后来慢慢成为一个通用的协议。与JMS不同,AMQP定义了详细的消息格式,因此任何语言开发的软件都可以与其他语言开发的软件进行互通,只要他们的消息格式一致即可。
AMQP协议定义了Message Broker作为消息服务器,定义了User作为消息服务器的使用者(producer或consumer),User和Message Broker之间可以建立物理连接Connection,在Connection上,可以创建虚拟连接channel。基于Channel,可以声明(declare)交换机exchange,队列queue,可以在exchange和queue间建立绑定binding,Message由生产者发送到exchange,然后按照规则发送给binding到该exchange的queue。Message分为头部和消息体,其中头部包含了routing-key,而binding也有routing-key的属性,不过这个binding的这个属性可以是一个或多个明确的routing-key,也可以是一个或多个pattern。
exchange和queue之间可以有多个binding,一个exchange可以bind多个queue,一个queue也可以bind到多个exchange。这里exchange相当于硬件的交换机,但queue不是连线,而是一个缓存,binding是queue和exchange之间的关系。虽然exchange和queue之间可以有多个binding,但不会导致一个消息会从exchange重复发送给同一个queue,一个消息从一个exchange最多发送一次给一个queue。
binding实际上是exchange上的一条配置规则。
2011年8月31日,AMQP发布了1.0版本。1.0版本中去掉了exchange和binding,使用queue和link来代替。
分布式系统之消息中间件rabbitmq的更多相关文章
- 分布式系统消息中间件——RabbitMQ的使用基础篇
分布式系统消息中间件——RabbitMQ的使用基础篇
- 分布式系统消息中间件——RabbitMQ的使用思考篇
分布式系统消息中间件--RabbitMQ的使用思考篇 前言 前面的两篇文章分布式系统消息中间件--RabbitMQ的使用基础篇与分布式系统消息中间件--RabbitMQ的使用进阶篇,我们简单介 ...
- 分布式系统消息中间件——RabbitMQ的使用进阶篇
分布式系统消息中间件--RabbitMQ的使用进阶篇 前言 上一篇文章 (https://www.cnblogs.com/hunternet/p/9668851.html) 简单总结了分布式系 ...
- 消息中间件——RabbitMQ(一)Windows/Linux环境搭建(完整版)
前言 最近在学习消息中间件--RabbitMQ,打算把这个学习过程记录下来.此章主要介绍环境搭建.此次主要是单机搭建(条件有限),包括在Windows.Linux环境下的搭建,以及RabbitMQ的监 ...
- 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!
前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架 ...
- 消息中间件——RabbitMQ(四)命令行与管控台的基本操作!
前言 在前面的文章中我们介绍过RabbitMQ的搭建:RabbitMQ的安装过以及各大主流消息中间件的对比:,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作. 1. 命令行 ...
- 消息中间件——RabbitMQ(五)快速入门生产者与消费者,SpringBoot整合RabbitMQ!
前言 本章我们来一次快速入门RabbitMQ--生产者与消费者.需要构建一个生产端与消费端的模型.什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker. 我们的消费端进行 ...
- 消息中间件——RabbitMQ(六)理解Exchange交换机核心概念!
前言 来了解RabbitMQ一个重要的概念:Exchange交换机 1. Exchange概念 Exchange:接收消息,并根据路由键转发消息所绑定的队列. 蓝色框:客户端发送消息至交换机,通过路由 ...
- 消息中间件——RabbitMQ(七)高级特性全在这里!(上)
前言 前面我们介绍了RabbitMQ的安装.各大消息中间件的对比.AMQP核心概念.管控台的使用.快速入门RabbitMQ.本章将介绍RabbitMQ的高级特性.分两篇(上/下)进行介绍. 消息如何保 ...
随机推荐
- 从 HelloWorld 看 Java 字节码文件结构
很多时候,我们都是从代码层面去学习如何编程,却很少去看看一个个 Java 代码背后到底是什么.今天就让我们从一个最简单的 Hello World 开始看一看 Java 的类文件结构. 在开始之前,我们 ...
- CLOB型转成字符型
//oracle.sql.Clob类型转换成String类型 public static String ClobToString(Clob clob) { String reString = &quo ...
- Object类----toString,equals,hashcode
一.toString 的应用方法与覆写 public class testoveridetoString { public static void main(String[] args) { /*ob ...
- 使用CMD命令编译和运行Java程序
对于初学者来说,使用CMD命令(Unix以及类Unix系统采用Termial)来编译和运行Java的好处是让初学者直观地体会到编译(Compile)这一步骤,加深记忆.所谓编译就是将文本文件xxx.j ...
- 初尝Eclipse
一.选择开发工具 1.Eclipse和JDK 我所选用的是Eclipse开发工具,此工具可以用来编译JAVA语言,但windows系统没有内置的JAVA运行环境,所以需要下载JDK,用来配置JAVA的 ...
- sentinel监控redis高可用集群(二)
一.端口转发. 如果在一个主机里面,安装了两个redis实例,可以在项目里面配置IP端口,用iptables转发. iptables -t nat -A PREROUTING -p tcp --dpo ...
- poj 3664
http://poj.org/problem?id=3664 进行两轮选举,第一轮选前n进入第二轮,第二轮选最高 #include<algorithm> #include<cstdi ...
- ASCII十进制转字符串的方法
/// <summary> /// ASCII转字符串 /// </summary> /// <param name="asciiCode">A ...
- salesforce lightning零基础学习(一) lightning简单介绍以及org开启lightning
lightning对于开发salesforce人员来说并不陌生,即使没有做过lightning开发,这个名字肯定也是耳熟能详.原来的博客基本都是基于classic基于配置以及开发,后期博客会以ligh ...
- 如何在C#项目中使用NHibernate
现代化大型项目通常使用独立的数据库来存储数据,其中以采用关系型数据库居多.用于开发项目的高级语言(C#.Java等)是面向对象的,而关系型数据库是基于关系的,两者之间的沟通需要一种转换,也就是对象/关 ...