.
消息队列的作用与使用场景
解耦 / 异步 / 削峰
.
Channel和vhost的作用
Channel 减少TCP连接资源的消耗
vhost: 资源隔离, 提升硬件资源的利用率 ( 可以挤很多来源于不同系统的 Exchange Queue )
.
消息有哪些路由方式, 适合什么场景
- DIRECT 业务非常明确的时候, 一个exchange对应一个queue的时候
- TOPIC 带通配符, 根据消息的内容或消息等级做过滤, 决定分发到哪个Queue, 风控的消息发给风控的Queue, 广告的消息就发给广告的Queue
- FANOUT 广播类型 一个消息, 大家都关注, 任何消息都会发往绑定好的所有的Queue
Exchange和Queue, Queue与Consumer的绑定关系是什么样的
多对多
当一个队列对应多个消费者的时候, 消息的分发是按照轮询的方式, 每个消费者给多少取决于prefetch count配置了多少
多个消费者无法保证有序性的消费消息
.
无法被路由的消息, 去了哪里
如果没有配置, 就直接丢弃消息
如果不想丢弃, 提供了如下两种方式
- returnListener回发机制: 在代码里, 一个回调函数里, 可以处理这种消息
- 备份的Exchange: 如果配了备份Exchange, 就会把消息转发到这个Exchange里
消息什么时候会变成Dead Letter(死信)
- 消息过多 ( 超过了队列的最大长度和最大字节数: x-max-length