PHP[018]:RabbitMq
rabbitMq
exchange
type | 作用 |
---|---|
fanout | 绑定即 接收 |
direct | 绑定并匹配符合时 接收 |
topic | 绑定并模糊匹配符合时接收 |
headers | 绑定并匹配headers规则时接收 |
exchange 和 exchange 是多对多的关系
exchange 和 queue 也是多对多的关系
树挪死,人挪活
mq 的具体使用还是看场景,从业务严格的程度来说 direct 和 headers 都是比较不错的交换机类型,尽管书本上说 headers 比 topic 慢
,但是 headers 的扩展性和可读性在某些业务场景下比 topic 要好很多。
毕竟一天 8000 订单 ,按照一个订单的生命周期可以发送 create,pay,confirm,waitcheckin,checkin 这些事件,且每个单子都可以发出这些事件,一天不过 8000*5 = 40000。是一个比较可控的范围
用 headers 表示一个订单的 bookfrom 和 lodgeUnitType 是比较容易的 如果用 topic 表示的话,就变得丑陋很多 1
2
3
4
5$headers = [
'actionType'=>'xxx',
'bookFrom'=>'xxxxx',
'lodgeUnit'=>'xxx',
]; 并且规则的书写也不如 headers 来的直接,明确。1
2
$topoc = "actionType:{$actionType};bookFrom:{$bookFrom};lodgeUnitType:{$lodgeUnitType}";