本文主要是介绍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
这篇关于rabbitmq企业级应用开发总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!