分布式系统之消息中间件rabbitmq

博客分类:

      感谢:
 一般php 用rabbitmq  java 用activemq 
      http://spartan1.iteye.com/blog/1180247
 

既然要做分布式系统,就不得不说分布式消息通信系统。分布式系统的基础是各个分布式单元能够以各种方式互相通信,分布式消息中间件比较有名的开源实现有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的更多相关文章

  1. 分布式系统消息中间件——RabbitMQ的使用基础篇

    分布式系统消息中间件——RabbitMQ的使用基础篇

  2. 分布式系统消息中间件——RabbitMQ的使用思考篇

    分布式系统消息中间件--RabbitMQ的使用思考篇 前言     前面的两篇文章分布式系统消息中间件--RabbitMQ的使用基础篇与分布式系统消息中间件--RabbitMQ的使用进阶篇,我们简单介 ...

  3. 分布式系统消息中间件——RabbitMQ的使用进阶篇

    分布式系统消息中间件--RabbitMQ的使用进阶篇 前言     上一篇文章 (https://www.cnblogs.com/hunternet/p/9668851.html) 简单总结了分布式系 ...

  4. 消息中间件——RabbitMQ(一)Windows/Linux环境搭建(完整版)

    前言 最近在学习消息中间件--RabbitMQ,打算把这个学习过程记录下来.此章主要介绍环境搭建.此次主要是单机搭建(条件有限),包括在Windows.Linux环境下的搭建,以及RabbitMQ的监 ...

  5. 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!

    前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架 ...

  6. 消息中间件——RabbitMQ(四)命令行与管控台的基本操作!

    前言 在前面的文章中我们介绍过RabbitMQ的搭建:RabbitMQ的安装过以及各大主流消息中间件的对比:,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作. 1. 命令行 ...

  7. 消息中间件——RabbitMQ(五)快速入门生产者与消费者,SpringBoot整合RabbitMQ!

    前言 本章我们来一次快速入门RabbitMQ--生产者与消费者.需要构建一个生产端与消费端的模型.什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker. 我们的消费端进行 ...

  8. 消息中间件——RabbitMQ(六)理解Exchange交换机核心概念!

    前言 来了解RabbitMQ一个重要的概念:Exchange交换机 1. Exchange概念 Exchange:接收消息,并根据路由键转发消息所绑定的队列. 蓝色框:客户端发送消息至交换机,通过路由 ...

  9. 消息中间件——RabbitMQ(七)高级特性全在这里!(上)

    前言 前面我们介绍了RabbitMQ的安装.各大消息中间件的对比.AMQP核心概念.管控台的使用.快速入门RabbitMQ.本章将介绍RabbitMQ的高级特性.分两篇(上/下)进行介绍. 消息如何保 ...

随机推荐

  1. Nginx负载均衡——扩展功能(NGINX Plus)

    本文主要是介绍了NGINX Plus的相关功能,横跨了NGINX Plus R5/R6/R7/R9等各个不同版本的更新. 什么是NGINX Plus? 顾名思义,就是Nginx的加强版或者扩展版.我们 ...

  2. javascript从数组中删除一个元素

    Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.sp ...

  3. API网关系列之Kong的介绍以及安装

    一.API网关产生背景 在微服务的架构中,一个大的应用会被拆分成多个小的单一的服务提供出来,这些小的服务有自己的处理,有自己的数据库(也可以共用),也许语言也是不一样的,他们可以部署在一个或多个服务器 ...

  4. jQuary学习の二の语法

    jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作.基础语法: $(selector).action() 美元符号定义 jQuery 选择符(selector)"查询& ...

  5. MSSQL存储过程--CAST和CONVERT使用区别

    数据类型显示转换:CAST和CONVERT(CAST 函数基于 SQL-92 标准并且优先于 CONVERT) ①: CAST是时间类型和字符串之间的转换,使用:CAST(expression AS ...

  6. 使用MBROSTool 工具制作本地硬盘F3救急模式的方法总结

    前面写了一篇使用MBROSTool 工具制作本地硬盘多启动盘的方法总结.里面就是可以把一些系统安装到硬盘上面方便使用,比如安装PE到硬盘,不过启动的时候会先进入多UDm菜单,然后选择[启动本地系统]后 ...

  7. Asp.Net MVC 文件管理Demo(文件展示,上传,下载,压缩,文件重命名等)

    之前 ,有想做一个文件管理页面. 参考了 许多资料,终于完成了一个基于Asp.net MVC 的文件管理Demo.界面如下.   一,实现功能及相关技术 文件管理Demo基于Asp.NET MVC , ...

  8. js操作DOM元素

    创建 document.createElement() 查找 document.getElementById()   返回对拥有指定 id 的第一个对象的引用. document.getElement ...

  9. 笔记:MyBatis 使用 Java API配置

    我们已经讨论了各种MyBatis配置元素,如envronments.typeAlias和typeHandlers,以及如何使用XML配置它们.即使你想使用基于JavaAPI的MyBatis配置,MyB ...

  10. 大数据 --> MapReduce原理与设计思想

    MapReduce原理与设计思想 简单解释 MapReduce 算法 一个有趣的例子:你想数出一摞牌中有多少张黑桃.直观方式是一张一张检查并且数出有多少张是黑桃? MapReduce方法则是: 给在座 ...