rabbitmq企业级应用开发总结

------------------------------------------------------------------------

推荐文档:

https://geewu.gitbooks.io/rabbitmq-quick/content/index.html

https://www.rabbitmq.com/documentation.html

------------------------------------------------------------------------

一、简介

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言(Erlang语言是专门为开发concurrent和distribution系统的一种语言,它能很好的对分布式和并发做支持)编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

二、基础概念

Publisher

Publisher是Message的生产者,Publisher是Clients,主要产生Message

Consumer

Consumer是Message的消费者,Consumer 是Clients,Publisher产生的Message,最终要到达Consumer进行消费

Broker

Broker是接收和分发消息的应用,也就是说RabbitMQ Server就是Message Broker

Exchange

指定消息按什么规则,路由到哪个Queue,Message消息先要到达Exchange,由Exchange将消息路由到一个或多个Queue中(或者丢弃),在Server中承担着从Publisher接收Message的责任。

RabbitMQ常用的Exchange Type有fanout、direct、topic、headers这四种,不同的类型有着不同的路由策略(AMQP规范里还提到两种Exchange Type,分别为system与自定义,这里不予以描述)

Routing key

生产者在将消息发送给Exchange的时候,一般会指定一个routing key,来指定这个消息的路由规则,而这个routing key需要与Exchange Type及binding key联合使用才能最终生效。

在Exchange Type与binding key固定的情况下(在正常使用时一般这些内容都是固定配置好的),我们的生产者就可以在发送消息给Exchange时,通过指定routing key来决定消息流向哪里。

RabbitMQ为routing key设定的长度限制为255 bytes。

Binding

RabbitMQ通过Binding将Exchange与Queue关联起来,这样RabbitMQ就知道如何正确地将消息路由到指定的Queue了。

Binding key

在绑定(Binding)Exchange与Queue的同时,一般会指定一个Binding key;

消费者将消息发送给Exchange时,一般会指定一个routing key;

当binding key与routing key相匹配时,消息将会被路由到对应的Queue中。

在绑定多个Queue到同一个Exchange的时候,这些Binding允许使用相同的binding key。

bindi

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值