`

RabbitMQ/AMQP所描绘的美好前景(转)

阅读更多

rabbitMQAMQP 用 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 进入金融系统”,具体的事例,大概就是这件事了。

分享到:
评论

相关推荐

    go-amqp-reconnect:github.comstreadwayamqp连接和通道的自动重新连接示例

    streadway / amqp连接/通道自动重新连接包装如果rabbitmq服务器重新启动/关闭,则streadway / amqp连接/通道不会重新连接。 对于简单的开发人员,这里是带有详细注释的自动重新连接包装。如何更改现有代码添加导入...

    Golang基于amqp协议实现rabbitMQ队列消费

    github.com/streadway/amqp log ) //我们还需要一个辅助函数来检查每个amqp调用的返回值: func failOnError(err error, msg string) { if err != nil { log.Fatalf(%s: %s, msg, err) } } func mains() { //...

    CentOS7 安装RabbitMQ集群.docx

    baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-...

    amqp-core-complete-v1.0、amqp.0-10.zip

    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来源:...

    AMQP 0.9.1 的 Go 客户端.zip

    请考虑使用其他分支rabbitmq/amqp091-go。如有疑问,请在该存储库中开始讨论或使用其他 RabbitMQ 社区资源。项目成熟度该项目已在生产系统中使用多年。截至 2022 年,此存储库未主动维护。此存储库对于任何潜在的...

    JMeterAMQP.jar

    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...

    streadway / amqp的包装器,提供重新连接逻辑和合理的默认设置-Golang开发

    go-rabbitmq streadway / amqp的包装器,提供重新连接逻辑和合理的默认设置。 如果发现有用,请用星号打该项目。Support支持streadway / amqp的go-rabbitmq包装器,提供重新连接逻辑和合理的默认设置。 如果发现有用...

    用于支持自动重新连接的staway / amqp的RabbitMQ包装器-Golang开发

    用于支持自动重新连接兔子的steadway / amqp的RabbitMQ包装器RabbitMQ包装器lib在streadway / amqp周围带有一些铃铛。 支持自动重新连接支持上下文(即取消/超时)??? 动机我们(批次)大量使用RabbitMQ-我们将其...

    docker部署redis/mongod/rabbitmq/nacos/mysql等服务

    该文档介绍docker部署redis/mongod/rabbitmq/nacos/mysql等服务详细步骤

    springboot-rabbitmq-amqp

    SpringBoot与RabbitMQ结合使用AMQP协议是现代企业级应用程序中常见的消息中间件解决方案。本文将深入探讨SpringBoot如何集成RabbitMQ以及AMQP协议的基础知识,旨在帮助开发者理解和应用这一技术栈。 首先,...

    AMQP-CPP是用于与RabbitMq消息中间件通信的c++库

    AMQP-CPP是一个开源的C++库,专为与RabbitMQ消息中间件进行通信而设计。RabbitMQ是一款广泛使用的开源消息代理,基于Advanced Message Queuing Protocol (AMQP)标准,提供高效、可靠的异步消息传递。AMQP-CPP库使得...

    RabbitmQ相关Amqp的PHP实例代码

    RabbitMQ基于AMQP(Advanced Message Queuing Protocol)协议,它提供了一种可靠、可扩展且灵活的方式来处理分布式系统中的消息传递。下面我们将深入探讨RabbitMQ与AMQP协议以及如何在PHP中实现相关的实例代码。 ...

    windows php7.3-ts-vc15-rabbitmq-amqp.zip

    安装方法: 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.zip

    amqp_client, rebar 友好的rabbitmq客户机 fork client客户端的fork 友好 这是官方 rabbitmq/amqp客户机的一个 fork 。它应该包含在 rebar.config file: 中的rebar 项目中{deps, [ {amqp_client,

    RabbitMQ实战指南-rabbitmq-action.zip

    2. **配置**: 配置文件通常位于`/etc/rabbitmq/rabbitmq.conf`,包括端口设置、日志级别、磁盘和内存警报阈值等。 3. **管理插件**: `rabbitmq-management`插件提供了一个Web界面,用于监控、管理RabbitMQ实例,...

    spring rabbitmq amqp

    Spring RabbitMQ AMQP 是一个基于Java的开源框架,它整合了RabbitMQ消息中间件,实现了高级消息队列协议(AMQP)。这个框架是Spring生态的一部分,为Spring Boot应用程序提供了强大的消息处理能力。AMQP是一种标准的...

    rabbitmq-c rabbitmq amqp c++接口库

    RabbitMQ是一款开源的消息中间件,它遵循AMQP(Advanced Message Queuing Protocol)协议,用于在分布式系统中高效地路由和传递消息。`rabbitmq-c`是针对C语言的RabbitMQ客户端库,而`rabbitmq-c++`则可能是基于`...

    Jmeter测试RabbitMQ插件(基于amqp-client-3.4.4版本)

    需要下载amqp-client-3.4.4.jar和JmeterAMQP.jar,并放在Jmeter的lib/ext目录

    rabbitmq客户端 for Linux系统

    #include <rabbitmq/amqp_framing.h> amqp_connection_state_t conn = amqp_new_connection(); int socket = amqp_tcp_socket_new(conn); if (socket == AMQP_BAD_SOCKET) { // 错误处理 } if (amqp_socket_open...

    RabbitMQ linux 安装包和安装环境

    然后编辑`/etc/rabbitmq/rabbitmq-env.conf`,添加以下行: ```conf NODE_HOME=/usr/lib/rabbitmq MNESIA_BASE=/data/rabbitmq/mnesia ``` 重启RabbitMQ服务使更改生效: ```bash sudo systemctl restart ...

Global site tag (gtag.js) - Google Analytics