RabbitMQ的架构图
RabbitMQ的五种模式:
- 简单模式(Hello World)
效果:实现一对一消息传输,生产者直接将消息放在放在队列(Queue)中,消费者直接从队列中拿取信息
优点:简单移处理,适用于简单的请求-响应场景
缺点:灵活度低,只适合处理简单消息传递,不适合广播或路由等复杂场景,且如果信息处理较为复杂时生产信息可能会超过信息处理,导致消息队列堆积
2.工作队列模式(Work Queues)
效果:实现一对多消息传输,实现负载均衡和并行处理,生产者发送的消息进入队列,多个消费者可以监听同一个队列并竞争性地接收消息进行处理,简单来说就是将多个消费者绑定到同一个队列中,共同处理队列中的消息
优点:提高处理效率,适合任务分配和异步处理任务的场景。
缺点:消息的顺序性和唯一性可能会受到影响,需要额外的逻辑处理可能出现的顺序性和重复性
3.发布订阅模式(Publish/Subscribe)
效果:实现一对多的消息传输,生产者传递的消息通过交换机发送给所有绑定的队列,每个绑定队列的消费者都能收到消息
优点:解耦消费者和生产者,实现消息广播,适用于实时通知、日志记录等场景
缺点:消息可能会被重复处理
4.路由模式(Routing)
效果:生产者发送带有RoutingKey的信息,交换器根据RoutingKey路由到指定的消息队列,实现精确信息路由
优点:灵活路由,能够精确控制信息流向
缺点:配置相对复杂,需要正确配置路由键和交换机之间的绑定关系
5.主题模式(Topics)
效果:跟路由模式相比,主题模式变化的只是使用了 Topic Exchange(主题交换器) 对比于 Direct Exchange(直连交换器)(路由模式使用的交换器) 支持通配符的模糊消息路由,相较于路由模式会更加灵活
优点:灵活的路由规则,可以更加灵活的控制信息流向
缺点:通配符可能会增加匹配的复杂性