面試回答模板
“RabbitMQ 在 AMQP 協議中預定義了 四種常用交換機 + 兩種特殊類型,共 6 種:
- Direct:routing-key 全等匹配;
- Fanout :廣播,忽略 key;
- Topic:按
*.#
通配符匹配; - Headers :按消息頭鍵值對匹配(性能低,很少用);
- System :系統內部保留(如
amq.rabbitmq.trace
); - 自定義:通過插件擴展實現。
Java 開發層面 只需關注前 4 種,創建方式相同:
channel.exchangeDeclare("x", BuiltinExchangeType.DIRECT|FANOUT|TOPIC|HEADERS);
”
追問場景示例
面試官:為什么實際項目里很少用 Headers?
答:Headers Exchange 在匹配時遍歷所有鍵值對,CPU 開銷大,且可讀性差,Topic 幾乎能覆蓋其需求,所以線上基本不用。