RabbitMQ是基于AMQP(Advanced Message Queuing Protocol)的可复用的消息系统,AMQP提供统一消息服务的应用层的标准高级消息队列协议,用于消息中间件的设计。
RabbitMQ的开发语言是Erlang,可以使完全不同的Application共享数据。是程序中解耦的一大利器,当程序中一些不需要及时返回且耗时时间比较长的逻辑,可以使用MQ进行异步处理,缩短了请求响应时间,吞吐就大了。
基本概念
1:Host :Server服务器主机
(name主机名,port端口,VirtualHost虚拟主机,username用户名,password密码)
2:Exchange:交换机,用于指定消息按照什么规则,路由到什么队列。
(name,交换机名称,type交换机类型,Durable是否持久化,AutoDelete是否自动删除)
其中交换机类型包括(topic,direct,fanout,x-delayed-message)
3:Queue :队列,即消息的容器,每个消息都可以生产到一个或多个队列。
(name:队列名称,Durable是否持久化,AutoDelete是否自动删除,NoAck是否消息确认)
4:RoutingKey:路由关键字。Exchange根据此进行消息投递。
5:Binding:绑定,按照路由关键字把Exchange和Queue绑定关联起来。
6:Channel:消息的传输信道。每一个连接,可建立多Channel,每个Channel代表一个会话。
7:Producer:生产者。发送消息的程序。
8:Consumer:消费者。接收消息的程序。
生产/消费的流程
1:根据Server主机地址,端口,虚拟主机,账号和密码 设置ConnectionFactory
2:创建新的连接 NewConnection
3:创建通道 CreateChannel
4:声明创建队列QueueDeclare
5:发送消息Publish/接收消息Consume
6:关闭通道CloseChannel
8:关闭连接CloseConnection