既然要做分布式系统,就不得不说分布式消息通信系统。分布式系统的基础是各个分布式单元能够以各种方式互相通信,分布式消息中间件比较有名的开源实现有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 拥有数以万计的用户,是最受欢迎的开源消息代理之一。从T-Mobile 到Runtastic,RabbitMQ 在全球范围内用于小型初创公司和大型企业. RabbitMQ 是轻量级的,易于在本地和云端部署。它支持多种消息传递协议。...
课程目的 1. 了解消息中间件背景知识、使用场景、发展等 2. 掌握RabbitMQ、RocketMQ、Kafka这三款主流的消息中间件的架构、模型和使用(开发、 ...分布式系统中如何进行远程通信 为什么要使用消息中间件?市场上有哪些
分布式消息中间件主要用于分布式系统架构中,进行应用系统间的数据传输,已经在各种行业中广泛应用。开源分布式消息中间件种类很多,各有侧重,在引入时需要结合具体的应用场景,选择性价比最高的开源产品。因此,...
该资源包括RabbitMQ消息中间件详细视频教程,包括详细笔记及源码,可以很好的帮助学习消息中间件。RabbitMQ用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。...用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。...用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
消息中间件主要是实现分布式系统中解耦、异步消息、流量销锋、日志处理等场景,后面我也会结合一些场景进行探讨。现在生产中用的最多的消息队列有Activemq,rabbitmq,kafka,rocketmq等。 不过这个题目写的有点大。...
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也...
消息中间件主要是实现分布式系统中解耦、异步消息、流量销锋、日志处理等场景,后面我也会结合一些场景进行探讨。现在生产中用的最多的消息队列有Activemq,rabbitmq,kafka,rocketmq等。分布式消息队列学习必备
java消息服务(Java Message Service)即JMS,是一个Java平台中关于面向消息中间件的api,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信 什么是AMQP AMQP(advanced message queuing protocol)是一...
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、...用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供**应用解耦**(降偶)...
mall-互联网商城高并发秒杀系统项目介绍mall项目是电商项目中其中的一个秒杀业务模块,基于SpringBoot+Mybatis实现。项目演示项目首页商品...Validator验证框架RabbitMq消息队列Redis分布式缓存Docker应用容器引擎ht
绝大多数应用程序的核心都有一个虚拟交换机,用于在服务器、程序和服务之间快速...RabbitMQ是一个高效且易于部署的消息队列服务器,它可以轻而易举地处理各种情形下的消息通信,不论是网络初创公司还是大型企业系统。
本项目基于Spring的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ添加和读取消息的功能。并比较了两种模式:生产者-消费者模式和发布-订阅模式的区别。AMQP作为比JMS更加高级的消息协议,支持...
RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写,支持多种客户端(语言),用于在分布式系统中存储消息,转发消息,具有高可用,高可扩性,易用性等特征\ RabbitMQ是采用 Erlang语言开发的,所以系统...
ActiveMQ消息中间件是一种在分布式系统中应用程序借以传递消息的媒介。常用的有ActiveMQ,RabbitMQ,kafka。ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。
对于消息中间件,目前在企业级应用以及微服务应用跟分布式系统应用还是相当广泛的,但是有时候有些童鞋苦于没有入门以及实战的视频教程指导而磕磕碰碰了许久。在此,我精心录制的这一套视频教程将几乎手把手指导大家...