Rabbit MQ学习总结

RabbitMQ消息队列

  • Broker:简单来说就是消息队列服务器实体。
  • Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
  • Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
  • Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。
  • Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
  • vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。
  • producer:消息生产者,就是投递消息的程序。
  • consumer:消息消费者,就是接受消息的程序。
  • channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。

发送消息流程:

1,  获取Conection

2,  获取Channel

3,  定义Exchange,Queue

4,  使用一个RoutingKey将Queue Binding到一个Exchange上

5,  通过指定一个Exchange和一个RoutingKey来将消息发送到对应的Queue上,

6,  接收方在接收时也是获取connection,接着获取channel,然后指定一个Queue直接到它关心的Queue上取消息,它对Exchange,RoutingKey及如何binding都不关心,到对应的Queue上去取消息就OK了(这个是重点,接收方,只关心queue的名字即可,其他的都不关心!!!!!)

换句话说:

发送放关心:ExchangName, QueueName,BindingKey

接收方关心:QuueuName

 

Exchange

RabbitMQ中有三种常用的转发方式,分别是:

DirectExchange:路由键方式转发消息。
FanoutExchange:广播方式转发消息。
TopicExchange:主题匹配方式转发消息

  1. Direct: 先策略匹配到对应绑定的队列后 才会被投送到该队列  交换机跟队列必须是精确的对应关系 这种最为简单
  2. Topic: 转发消息主要是根据通配符 在这种交换机下,队列和交换机的绑定会定义一种路由模式,那么,通配符就要在这种路由模式和路由键之间匹配后交换机才能转发消息 这种可以认为是Direct 的灵活版  
  3. Headers:也是根据规则匹配, 相较于 direct 和 topic 固定地使用 routingkey , headers 则是一个自定义匹配规则的类型
    在队列与交换器绑定时 会设定一组键值对规则 消息中也包括一组键值对( headers 属性) 当这些键值对有一对 或全部匹配时 消息被投送到对应队列
  4. Fanout : 消息广播模式 不管路由键或者是路由模式 会把消息发给绑定给它的全部队列  如果配置了routingkey会被忽略

Direct Exchange
Direct Exchange是RabbitMQ默认的交换机模式,也是最简单的模式,根据key全文匹配去寻找队列

四个概念非常重要: 虚拟主机(virtual host),交换机(exchange),队列(queue)和绑定(binding)

  - 交换器(Exchange),它是发送消息的实体。

     - 队列(Queue),这是接收消息的实体。

     - 绑定器(Bind),将交换器和队列连接起来,并且封装消息的路由信息。

Exchange指向Queue的黑色线—RoutingKey,可以将它简单的理解为一条连接Exchange和Queue的路线

Exchange和Queue都需要通过channel来进行定义,而RoutingKey则只需要在binding时取个名字就行了。

你可能感兴趣的:(Java日常技术总结)