8.概念回顾

1、ConnectionFactory、Connection、Channel

 ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。
 Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。
 ConnectionFactory为Connection的制造工厂。
 Channel是我们与RabbitMQ打交道的最重要的一个接口,我们大部分的业务操作是在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等。

2、Queue

 Queue(队列)是RabbitMQ的内部对象,用于存储消息,用下图表示。
属性:
  name:名字
  Durability:是否持久化,Durable(是),Transient(否)
   Exclusive:排他性
  Auto Delete:如果选择yes,代表当最后一个监听移除后队列会自动删除
  Arguments:自定义扩展属性
212095110494.png
 RabbitMQ中的消息都只能存储在Queue中,生产者(下图中的P)生产消息并最终投递到Queue中,消费者(下图中的C)可以从Queue中获取消息并消费。
212095340475.png
 多个消费者可以订阅同一个Queue,这时Queue中的消息会被平均分摊给多个消费者进行处理,而不是每个消费者都收到所有的消息并处理。
212095350351.png

3、Binding

 RabbitMQ中通过Binding将Exchange与Queue关联起来,这样RabbitMQ就知道如何正确地将消息路由到指定的Queue了。
212095848604.png

4、Binding key

 在绑定(Binding)Exchange与Queue的同时,一般会指定一个binding key;消费者将消息发送给Exchange时,一般会指定一个routing key;当binding key与routing key相匹配时,消息将会被路由到对应的Queue中。
 在绑定多个Queue到同一个Exchange的时候,这些Binding允许使用相同的binding key。
 binding key 并不是在所有情况下都生效,它依赖于Exchange Type,比如fanout类型的Exchange就会无视binding key,而是将消息路由到所有绑定到该Exchange的Queue。

5、Exchange

 生产者将消息发送到Exchange(交换器,下图中的X),由Exchange将消息路由到一个或多个Queue中(或者丢弃)。
212095628115.png
   Exchange是按照什么逻辑将消息路由到Queue的?
   RabbitMQ中的Exchange有四种类型,不同的类型有着不同的路由策略

6、Message

 服务器和应用程序之间传递的数据,就是数据,有Properties和Body组成,属性有以下:
 content_type
 content_encoding
 priority:优先级从0-9,这个优先级不一定越高获取越先
 correlation_id:一般用来消息的唯一id,做一些ack,消息的路由,幂等情况下用到
 expiration:消息存活时间
 message_id
 timestamp
 type
 user_id
 app_id
 cluster_id


 这些属性有很多,我们会在接下来的课程中给大家逐一讲解到,首先我们先来看下如何在发送消息的时候设置消息的属性,编写一个基本的生产者消费者的代码
 以下代码创建连接工厂、得到连接、创建Channel等省略
clipboard (9).png
  在生产者这边我们指定了消息的持久化模式,编码,生命时长,包括自定义的属性,接下来我们看下消费者
clipboard (10).png

7、Virtual Host 虚拟主机

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

 评论


博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Material X 作为主题 , 总访问量为 次 。
载入天数...载入时分秒...