异步通信的常用实现就是—事件驱动模式

数据类型

  1. 基本消息队列
  2. 工作消息队列 work queue
  3. 发布、订阅
    1. 广播类型 Fanout
    2. 路由类型 Driect
    3. 主题类型 Topic

基本消息队列 work queue

一对一,发送者-queue-消费者

工作消息队列

一对多,一个队列多个消费者。消息会平均分发给每个消费者,消费者采取预取机制,提前从队列把自己要消费的消息先拉取下来。可以在配置文件设置消费者预取消息的数量

发布、订阅

与以上两种不同的是,发布订阅会依赖于一个交换机(exchange)来选择消息队列

1、广播 Fanout

每个消费者都可以得到消息,消息发送到交换机,交换机转发到队列,队列的所有消费者都可以消费消息

2、路由 Driect

消息队列queue需要指定routingKey作为主题,一个队列可以指定多个routingKey。生产者发送消息需要指定bindingKey来告诉交换机消息要转发到哪个消息队列,不同的队列可以指定相同的routingKey,效果和广播模式一致。

3、主题 Topic

队列指定routingKey时可以使用通配符(#:代表一个或多个词,*:代表一个词),消息生产者设置bindingKey时一般由一个或多个单词组成。例:routingKey=chen.#,bindingKey=chen.name,交换机根据指定的bindingKey匹配通配符,转发到相应的消息队列上