RabbitMQ的核心对象

一、前言

是否遇到过需要在两个或多个系统中设置定时任务,来同步某些数据?是否遇到过需要提高业务逻辑的执行效率,增强用户体验感,而对与业务逻辑不相关,但与我们系统有关的一些逻辑进行异步处理?如果遇到过,那么恭喜你,消息中间件可以为你解决这些问题;

RabbitMQ是当前最主流的消息中间件之一;

二、RabbitMQ简介

1、什么是AMQP?

  • AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的生产者无需知道消息的消费者的存在,反之亦然;
  • AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全;

2、RabbitMQ是什么?

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

3、RabbitMQ包括哪些核心对象?

  • Server:又称Broker,接收客户端的连接,实现AMQP实体服务;

  • Conncetion:RabbitMQ的socket连接,它封装了socket协议相关部分逻辑;

  • ConncetionFactory:Connection的制造工厂;

  • Channel:网络通道,几乎所有操作都在Channel中进行,是进行读写的通道,客户端可建立多个Channel,每个Channel代表一个会话任务;

  • 为什么要建立多个Channel?
    因为一些应用程序需要多个连接到服务器,如果每次连接都要建立TCP连接,那样不但浪费资源,而且使得防火墙的配置变得十分困难。AMQP使用通道来实现多路传输,通道可以被认为是共享一个TCP连接的轻量级连接;
    客户端进行的每个协议操作都发送在一个通道上,每个通道的通信都是相互隔离,因此每个协议方法都携带一个通道ID,它是一个整数,被服务器和客户端用来区分方法该用于哪个通道;当一个连接被关闭时,它所属的所有通道都会被关闭;
    PS:Queue与Exchange的声明和绑定,都是在Channels中进行的;

  • Message:消息,服务器与应用程序之间传递的数据,由Properties和Body组成, Properties可以对消息进行修饰,如消息的优先级、传输格式(如JSON)、延迟等高级特性,Body则就是消息体内容;Message的详解

  • Virtual Host:虚拟地址,用于进行逻辑隔离,最上层的消息路由,一个 Virtual Host里面可以有若干个Exchange和Queue,同一个Virtual Host里面不能有相同名称的Exchange或Queue;Virtual Host作用及角色权限

  • Exchange:交换机,接收消息,根据路由键转发消息到绑定的队列;Exchange的详解

  • Queue:也称为Message Queue队列,保存消息并将它们转发给消费者; Queue的详解

  • Routing Key:路由规则,虚拟机可以用来确认路由到哪个队列;

  • Bingding:Exchange和Queue之间的虚拟连接;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值