springcloud Bus -RabbitMQ (一)

消息代理(Message Broker)

一种消息验证、传输、路由的架构模式。它在应用程序 之间起到通信调度并最小化应用之间的依赖的作用,使得应用程序可以高效地解耦通信过程

消息代理核心原理

消息代理是一个中间件产品,它的核心是一个消息的路由程序,用来实现接收和分发消息,并根据设定好的消息处理流来转发给正确的应用。它包括独立的通信和消息传递协议,能够实现组织内部和组织间的网络通信

消息代理的场景

•将消息路由到一个或多个目的地。

•消息转化为其他的表现方式。

•执行消息的聚集、消息的分解,并将结果发送到它们的目的地,然后重新组合响应返回给消息用户

•调用Web服务来检索数据

•响应事件或错误

•使用发布■订阅模式来提供内容或基于主题的消息路由

开源产品可以供大家使用,比如:ActiveMQ,Kafka,RabbitMQ,RocketMQ

RabbitMQ

基本概念

RabbitMQ以AMQP协议实现,所以它可以支持多种操作系统、多种编程语言,几乎 可以覆盖所有主流的企业级技术平台,在Spring Cloud Bus中包含了对Rabbit的自动化默认配置。

  • Broker:可以理解为消息队列服务器的实体,它是一个中间件应用,负责接收消息生产者的消息,然后将消息发送至消息接收者或者其他的Broker

  • Exchange:消息交换机,是消息第一个到达的地方,消息通过它指定的路由规则, 分发到不同的消息队列中去。

  • Queue:消息队列,消息通过发送和路由之后最终到达的地方,到达Queue的消息 即进入逻辑上等待消费的状态。每个消息都会被发送到一个或多个队列。

  •  Binding:绑定,它的作用就是把Exchange和Queue按照路由规则绑定起来,也就 是Exchange和Queue之间的虚拟连接。

  • Routing Key:路由关键字,Exchange根据这个关键字进行消息投递。

  • Virtual host:虚拟主机,它是对Broker的虚拟划分,将消费者、生产者和它们依赖 的AMQP相关结构进行隔离,一般都是为了安全考虚。比如,我们可以在一个Broker 中设置多个虚拟主机,对不同用户进行权限的分离。

  • Connection:连接,代表生产者、消费者、Broker之间进行通信的物理网络。

  • Channel:消息通道,用于连接生产者和消费者的逻辑结构。在客户端的每个连接里, 可建立多个Channel,每个Channel代表一个会话任务,通过Channel可以隔离同一 连接中的不同交互内容。

  •  Producer:消息生产者,制造消息并发送消息的程序。

  • Consumer:消息消费者,接收消息并处理消息的程序

消息投递到队列的整个过程大致如下:

  • 1. 客户端连接到消息队列服务器,打开一个Channel

  • 2. 客户端声明一个Exchange,并设置相关属性。

  • 3. 客户端声明一个Queue,并设置相关属性。

  • 4. 客户端使用Routing Key,在Exchange和Queue之间建立好绑定关系。

  • 5. 客户端投递消息到Exchange

  • 6. Exchange接收到消息后,根据消息的Key和已经设置的Binding,进行消息路由, 将消息投递到一个或多个Queue里。

Exchange类型。

  • 1. Direct交换机:完全根据Key进行投递。比如,绑定时设置了 Routing Key为abc, 那么客户端提交的消息,只有设置了 Key为abc的才会被投递到队列。

  • 2. Topic交换机:对Key进行模式匹配后进行投递,可以使用符号#匹配一个或多个词, 符号★匹配正好一个词。比如,abc. #匹配abc. def・ghi, abc. ★只匹配abc. def o

  • 3. Fanout交换机:不需要任何Key,它采取广播的模式,一个消息进来时,投递到与 该交换机绑定的所有队列。

RabbitMQ支持消息的持久化

也就是将数据写在磁盘上。为了数据安全考虑,大多数 情况下都会选择持久化。消息队列持久化包括3个部分:

  • 1. Exchange持久化,在声明时指定durable => 10

  • 2. Queue持久化,在声明时指定durable => 1。

  • 3. 消息持久化,在投递时指定delivery mode => 2 (1是非持久化)。

如果Exchange和Queue都是持久化的,那么它们之间的Binding也是持久化的。如果 Exchange和Queue两者之间有一个是持久化的,一个是非持久化的,就不允许建立绑定。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值