Java教程

HM-SpringCloud微服务系列4.3.3【发布/订阅模型】

本文主要是介绍HM-SpringCloud微服务系列4.3.3【发布/订阅模型】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1 发布/订阅模型简介

image

  1. 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化:
    • Publisher:生产者,也就是要发送消息的程序,但是不再发送到队列中,而是exchange交换机
    • Exchange:交换机。一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。到底如何操作,取决于Exchange的类型。Exchange有以下3种类型:
      • Fanout:广播,将消息交给所有绑定到交换机的队列
      • Direct:定向,把消息交给符合指定routing key 的队列
      • Topic:通配符,把消息交给符合routing pattern(路由模式) 的队列
    • Consumer:消费者,与以前一样,订阅队列,没有变化
    • Queue:消息队列也与以前一样,接收消息、缓存消息。
  2. Exchange(交换机)只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那么消息会丢失!

2 Fanout-Exchange广播交换机

小结

  1. 交换机的作用是什么?
    • 接收publisher发送的消息
    • 将消息按照规则路由到与之绑定的队列
    • 不能缓存消息,路由失败,消息丢失
    • FanoutExchange的会将消息路由到每个绑定的队列
  2. 声明队列、交换机、绑定关系的Bean是什么?
    • Queue
    • FanoutExchange
    • Binding

3 Direct-Exchange定向交换机

小结

  1. 描述下Direct交换机与Fanout交换机的差异?
    • Fanout交换机将消息路由给每一个与之绑定的队列
    • Direct交换机根据RoutingKey判断路由给哪个队列
    • 如果多个队列具有相同的RoutingKey,则与Fanout功能类似
  2. 基于@RabbitListener注解声明队列和交换机有哪些常见注解?
    • @Queue
    • @Exchange

4 Topic-Exchange通配符交换机

小结

  1. 描述下Direct交换机与Topic交换机的差异?
    • Topic交换机接收的消息RoutingKey必须是多个单词,以 **.** 分割
    • Topic交换机与队列绑定时的bindingKey可以指定通配符
    • #:代表0个或多个词
    • *:代表1个词
这篇关于HM-SpringCloud微服务系列4.3.3【发布/订阅模型】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!