RabbitMQ
一般用于微服务架构的服务之间,但是也可以用在服务器-客户端之间。
概述
RabbitMQ 是一种消息队列中间件,通常用于服务之间的通信,而不是直接在服务器与客户端之间。它的作用是将消息从一个系统(生产者)传递到另一个系统(消费者),并在两个系统之间提供解耦。RabbitMQ的典型使用场景包括:
服务间通信:RabbitMQ常用于微服务架构中,作为服务之间的消息传递机制。各个微服务通过 RabbitMQ 发布和接收消息,这样它们可以异步地进行通信并解耦,避免直接的依赖。
异步任务处理:服务可以将任务投递到 RabbitMQ 队列中,任务被消费者异步处理。这样,处理者可以根据处理能力的需求灵活扩展。
事件驱动架构:在事件驱动架构中,RabbitMQ 可用作事件的传输通道,当某个事件发生时,相关服务会向 RabbitMQ 发布消息,其他服务可以消费并根据事件做出反应。
虽然 RabbitMQ 通常在服务间通信中使用,但它也可以在客户端和服务器之间使用,特别是在某些复杂的客户端-服务器应用程序中。例如,客户端可能会作为生产者发布消息到 RabbitMQ,服务器作为消费者接收并处理这些消息,或反过来。
总结来说,RabbitMQ 主要用于服务间的消息传递,帮助实现解耦和异步处理。
使用情景
- 简单的消息发送和接收。
- 一个业务只能一个消费者处理(WorkerQueues):当业务耗时,可以启动多个Work来处理,当某个工作进程处理业务中途意外终止时,可让MQ再次发送消息,交给下个工作进程处理,一个消息只能由由一个消费者消费。
- 一个业务多个消费者处理(PublishSubscirbe ):在一个交换器上,接收者随机,独占一个队列名称,生产者在交换器上发送消息,广播所有的队列,上个示例:在同一个队列(非独占)上发送消息,只要一个消费者消费了这个消息就没。