【erlang语言之RabbitMQ】

What is RabbitMQ?

RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现

Robust messaging for applications

Easy to use

Runs on all major operating systems

Supports a huge number of developer platforms

Open source and commercially supported



 

RabbitMQ is officially supported on a number of operating systems and several languages. In addition, the RabbitMQ community has created numerous clients, adaptors and tools that we list here for your convenience.

 

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

 

RabbitMQ Java client and the API-guide

RabbitMQ JMS client (OSS)

Lyra, highly available RabbitMQ Java client

camel-rabbitmq, an Apache Camel component for interacting with RabbitMQ. This ships as part of Camel 2.12 or later.

Banyan, a RabbitMQ-backed message bus with a tree topology.

Spring Framework

 

Spring AMQP project for Java

RabbitMQ support in Spring XD

RabbitMQ support in Spring Integration

 

 

.NET

RabbitMQ .NET Client

EasyNetQ, an easy to use, opinionated .NET API for RabbitMQ

Restbus, a service-oriented framework for .NET

.NET NServiceBus client

RawRabbit, a higher-level client that targets ASP.NET vNext and supports .NET Core.

RabbitMQTools, PowerShell module containing cmdlets to manage RabbitMQ

 

Ruby

Bunny, a dead easy to use RabbitMQ Ruby client

March Hare, a JRuby RabbitMQ client

Sneakers, a fast background processing framework for Ruby and RabbitMQ

Hutch, a convensions-based framework for writing (Ruby) services that communicate over RabbitMQ.

Ruby RabbitMQ HTTP API client

Ruby RabbitMQ clients blog

Ruby RabbitMQ clients mailing list

 

Python

pika, a pure-Python AMQP 0-9-1 client (source code, API reference)

Celery, a distributed task queue for Django and pure Python

Haigha, an asynchronous AMQP 0-9-1 client based on libevent (the source code and docs are on github)

 

PHP

php-amqplib a pure PHP, fully featured RabbitMQ client

RabbitMqBundle incorporates RabbitMQ messaging with the Symfony2 web framework

PECL AMQP library built on top of the RabbitMQ C client

VorpalBunny a PHP client library using rabbitmq_jsonrpc_channel

Thumper a library of messaging patterns

CAMQP an extension for the Yii framework providing a gateway for RabbitMQ messaging

 

为什么使用Channel,而不是直接使用TCP连接?

  对于OS来说,建立和关闭TCP连接是有代价的,频繁的建立关闭TCP连接对于系统的性能有很大的影响,而且TCP的连接数也有限制,这也限制了系统处理高并发的能力。但是,在TCP连接中建立Channel是没有上述代价的。对于Producer或者Consumer来说,可以并发的使用多个Channel进行Publish或者Receive。有实验表明,1s的数据可以Publish10K的数据包。

你可能感兴趣的:(【erlang语言之RabbitMQ】)