rabbitMQ 是 AMQP 用 Erlang 实现的 MQ 。之前不是很理解,为什么要用 Erlang 来“又实现一个中间件”呢?这么做能发挥 Erlang 的优势么?机缘巧合,最近了解了一下 AMQP ,有了一点新的认识。
AMQP 主要是由金融领域的软件专家们贡献的创意,而联合了通讯和软件方面的力量,一起打造出来的规范。
Contributors: JPMorgan Chase Bank & Co., Cisco Systems, Inc., Credit Suisse, Envoy Technologies Inc., iMatix Corporation, IONA Technologies, Rabbit Technologies Ltd., Red Hat, Inc., TWIST Process Innovations Ltd, and 29West, Inc.
粗略的从概念上来讲 AMQP 首先满足的是金融系统的消息通讯业务需求。这是一个可以和 JMS 进行类比的消息中间件开放规范,所不同的是 AMQP 同时定义了消息中间件的语意层面和协议层面;另外一个不同是 AMQP 是语言中立的,而 JMS 仅和 Java 相关。
AMQP 在“语意层面的定义”,这就意味着,它并不仅仅是象 JMS 或者其他的 MQ 一样,仅能按照预定义的方式工作,而是“可编程”的消息中间件。
而“语言中立”则意味着只要遵循 AMQP 的协议,任何一种语言都可以开发消息组件乃至中间件本身。比如说这样的场景:“Java 写的消息端(新的前端)通过 Erlang 写的消息中间件(基础设施)与 C 写的另外一个消息端(遗留系统)进行消息交互”。
AMQP 是一个开放标准,目前还在 0.9 版本。尚未成熟,但市场上已经出现了很多这个标准的实现产品。
在 AMQP 所描绘的美好前景下,我们可以这么设想将来构建在成熟之后构建在 AMQP 之上的金融系统。前端程序员用他们熟悉的“工业语言”来构建系统中新的应用模块。后端程序员则继续用“老旧语言”在“遗产系统”上慢慢改进。当然,金融系统需要他们赖以沟通消息互相调用的“基础设施”必须坚若磐石。
为业界提供“高并发,易扩容”的产品,这似乎正是 Erlang 的强项。之前听说“ Erlang 进入金融系统”,具体的事例,大概就是这件事了。
分享到:
相关推荐
streadway / amqp连接/通道自动重新连接包装如果rabbitmq服务器重新启动/关闭,则streadway / amqp连接/通道不会重新连接。 对于简单的开发人员,这里是带有详细注释的自动重新连接包装。如何更改现有代码添加导入...
amqp0-8.pdf来源:https://www.rabbitmq.com/resources/specs/amqp0-8.pdf specs/amqp0-9-1.pdf来源:https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf A080219O.pdf来源:...
springboot-rabbitmq-amqp
go-rabbitmq streadway / amqp的包装器,提供重新连接逻辑和合理的默认设置。 如果发现有用,请用星号打该项目。Support支持streadway / amqp的go-rabbitmq包装器,提供重新连接逻辑和合理的默认设置。 如果发现有用...
用于支持自动重新连接兔子的steadway / amqp的RabbitMQ包装器RabbitMQ包装器lib在streadway / amqp周围带有一些铃铛。 支持自动重新连接支持上下文(即取消/超时)??? 动机我们(批次)大量使用RabbitMQ-我们将其...
该文档介绍docker部署redis/mongod/rabbitmq/nacos/mysql等服务详细步骤
1. 下载源码以及amqp-client的jar包[https://repo1.maven.org/maven2/com/rabbitmq/amqp-client/3.4.4/amqp-client-3.4.4.jar] 2. 解压源码,将amqp-client-3.4.4.jar放入源码根目录下 3. 修改build.xml...
RabbitmQ相关Amqp的PHP实例代码
spring rabbitmq amqp
安装方法: 1.把文件php_amqp.dll... 2.把文件rabbitmq.4.dll拷贝至:{php_path}/ ...3.如果是apache解析,需再次把文件rabbitmq.4.dll拷贝至:{apache_path}/bin/ 4.php.ini文件内添加:extension=amqp
amqp_client, rebar 友好的rabbitmq客户机 fork client客户端的fork 友好 这是官方 rabbitmq/amqp客户机的一个 fork 。它应该包含在 rebar.config file: 中的rebar 项目中{deps, [ {amqp_client,
rabbitmq-c amqp c++开发接口库,提供消息队列c++开发所需接口
导入里面的sql,也就是一个user表,直接运行,访问http://localhost:8080/rabbitMq/getUserSyc/1同步调用mq 访问http://localhost:8080/rabbitMq/getUser/1异步调用mq 通过反射调用业务代码,实现一个队列可以多种...
java rabbitmq spring springAMQP 代码包 project
amqp0-8.pdf来源:https://www.rabbitmq.com/resources/specs/amqp0-8.pdf specs/amqp0-9-1.pdf来源:https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf A080219O.pdf来源:...
tp6使用rabbitmq
github.com/streadway/amqp log ) //我们还需要一个辅助函数来检查每个amqp调用的返回值: func failOnError(err error, msg string) { if err != nil { log.Fatalf(%s: %s, msg, err) } } func mains() { //...
标签:rabbitmq、amqp、client、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
标签:rabbitmq、amqp、client、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
使用NodeJS的RabbitMQ演示/教程该存储库包含带有amqplib node-js库的RabbitMQ演示/教程。 RabbitMQ使用多种协议。 但是在本演示/教程中,我使用了AMQP 0-9-1 ,这是一种开放的通用消息传递协议。要求入门想运行我的...