【RabbitMQ】RabbitMQ队列模式(七)
1)订阅模式
声明交换机类型为fanout
,例如channel.exchangeDeclare("logs", "fanout");
将一个或者多个队列绑定到交换机exchange
上,生产者发送消息到交换机上,交换机一个广播的形式将消息发送到所有绑定的队列上。
2)路由模式(Routing)
声明交换机类型为direct
,例如channel.exchangeDeclare("logs", "direct ");
路由模式可以理解在订阅模式的高级版,是交换机与队列之间将一层过滤条件(路由),交换机可以根据条件将消息分发到对应的路由上。
3)主题模式(Topics)
声明交换机类型为topic
,例如channel.exchangeDeclare("logs", "topic ");
主题模式是路由模式基础上的进一步优化,交换机可以根据通配符,将消息投递到匹配上的队列中。
4)Headers Exchange
Header Exchange可以根据多个属性来进行路由,有点类似Http 中Header。Header Exchange可以忽略the routing key attribute。
匹配有两种方式all和any。这两种方式是在接收端必须要用键值”x-mactch”来定义。all代表定义的多个键值对都要满足,any代表只要满足一个就可以。fanout,direct,topic exchange的routingKey都需要要字符串形式的,而headers exchange则没有这个要求。
参考:
https://www.cnblogs.com/wyt007/p/9078647.html
https://www.rabbitmq.com/tutorials/amqp-concepts.html#exchange-headers
好学若饥,谦卑若愚