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的数据包。