• rabbitMQ整体架构模型是什么样子的
  • rabbitMQ消息是如何流转的
  • rabbitMQ安装与使用
  • 命令行与管控台
  • rabbitMQ消息生产与消费(Java)
  • rabbitMQ交换机详解
  • rabbitMQ队列 绑定 虚拟主机 消息

JMX

rabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,rabbitMQ使用的就是Erlang语言来编写的,并且rabbitMQ是基于AMQP协议。

通过不同调用api将消息发送到队列服务器中,然后后端可以调用api消费队列服务器中的消息,形成一个生产者与消费者模型

rabbitMQ优点:

  1. 开源,性能优秀,稳定性保障
  2. 提供可靠性消息投递模式confirm
  3. 与springAMQP完美整合,API丰富
  4. 集群模式丰富,基于表达式配置,HA模式,镜像队列模型
  5. 在保证数据不丢失的前提下做到高可用性,高可靠性

Q:rabbitMQ高性能的原因

  1. Erlang语言最初在于交换机领域的架构模式,这使得rabbitMQ在blocker之间进行数据交互,数据同步的性能是十分优秀的
  2. Erlang的优点就是:Erlang有着与原生socket一样的延时。

APC 基于socket,socket延时十分低,主要的考量目标就是延时以及响应  关注MQ的延时怎么样 性能怎么样 吞吐量怎么样。

 

什么是AMQP高级消息队列协议

AMQP定义:是具有现代特征的二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。

换句话说AMQP协议就是一个规范,在编写MQ时候只要依据MQ规范编写即可。

rabbitMQ入门

virtual host虚拟主机 (比较上层的路由)

exchange 交换机(AMQP核心)生产者直接将消息投递到exchange中,经历三个过程

  1. 查找服务器,建立链接,设置地址以及端口号
  2. 投递到哪一个virtual host
  3. 然后就是投递到哪一个exchange

rabbitMQ最主要目的就是解耦和的。

consumer  application是从message Queue中获取数据的,然后整个MQ最主要的一点就是exchange与message queue之间的绑定关系,不然的话message queue无法从exchange中获取消息。

AMQP核心概念

  1. Server:又称为broker,接受客户端的链接,实现AMQP实体服务
  2. connection:连接,应用程序与broker的网络连接
  3. channel:网络通道,几乎所有的操作都是在channel中进行的,channel是进行消息读写的通道。客户端可建立多个channel,每个channel代表一个会话任务。
  4. message:消息  服务器和应用程序之间传递的数据,由properties和body组成的。properties可以对消息进行修饰,比如消息的优先级,延时等高级特性;body则就是消息体内容。
  5. virtual host:虚拟地址,用于逻辑隔离,最上层的消息路由。一个virtual host中可以有若干个exchange和queue,同一个virtual host里面不能有相同名称的exchange或者是queue。
  6. 这是一个逻辑概念,并非像物理隔离那样子,将每一个数据大小都标明,使用逻辑隔离,可能会导致每个数据库内存大小并不一致。
  7. exchange:交换机,接收消息,根据路由键转发消息到绑定的队列中。队列与exchange中有绑定关系
  8. binding:exchange和Queue之间的虚拟连接,binding可以包含routing key
  9. routing key:一个路由规则,虚拟机可以用它来确定如何路由一个指定的信息
  10. Queue:也称message queue,消息队列,保存消息并将它们转发给消费者

 

相关文章: