异步通信的常用实现就是—事件驱动模式
数据类型
- 基本消息队列
- 工作消息队列 work queue
- 发布、订阅
- 广播类型 Fanout
- 路由类型 Driect
- 主题类型 Topic
基本消息队列 work queue
一对一,发送者-queue-消费者
工作消息队列
一对多,一个队列多个消费者。消息会平均分发给每个消费者,消费者采取预取机制,提前从队列把自己要消费的消息先拉取下来。可以在配置文件设置消费者预取消息的数量
发布、订阅
与以上两种不同的是,发布订阅会依赖于一个交换机(exchange)来选择消息队列
1、广播 Fanout
每个消费者都可以得到消息,消息发送到交换机,交换机转发到队列,队列的所有消费者都可以消费消息
2、路由 Driect
消息队列queue需要指定routingKey作为主题,一个队列可以指定多个routingKey。生产者发送消息需要指定bindingKey来告诉交换机消息要转发到哪个消息队列,不同的队列可以指定相同的routingKey,效果和广播模式一致。
3、主题 Topic
队列指定routingKey时可以使用通配符(#:代表一个或多个词,*:代表一个词),消息生产者设置bindingKey时一般由一个或多个单词组成。例:routingKey=chen.#,bindingKey=chen.name,交换机根据指定的bindingKey匹配通配符,转发到相应的消息队列上