一、消息队列的好处
消息队列可用于解耦重量级处理、缓冲或批处理工作以及平滑尖峰工作负载
1、更好的性能
消息队列支持异步通信,这意味着产生和使用消息的端点与队列交互,而不是彼此交互。生产者可以将请求添加到队列中,而无需等待它们被处理。消费者仅在消息可用时才处理它们。系统中的任何组件都不会停止等待另一个优化数据流。
2、提高可靠性
队列使您的数据持久化,并减少系统不同部分脱机时发生的错误。通过使用消息队列分隔不同的组件,您可以创建更多的容错性。如果系统的一部分永远无法访问,另一部分仍然可以继续与队列交互。队列本身也可以镜像以获得更高的可用性。
3、粒度可扩展性
消息队列可以在您需要的地方精确扩展。当工作负载达到峰值时,应用程序的多个实例都可以将请求添加到队列中,而不会发生冲突。随着这些传入请求的队列变长,您可以将工作负载分配给一组消费者。生产者、消费者和队列本身都可以按需增长和收缩。
4、简化解耦
消息队列消除了组件之间的依赖关系,并显着简化了解耦应用程序的编码。软件组件不受通信代码的影响,而是可以设计为执行离散的业务功能。
二、消息队列的类型
1、点对点
点对点意味着消息通过队列从一个应用程序(生产者/发送者)发送到另一个应用程序(消费者/接收者)。可以有多个消费者在一个队列上监听,但只有其中一个可以接收消息。因此,它是点对点或一对一。
2、发布/订阅
发布/订阅是一种消息传递模型,其中消息通过主题发送给多个消费者(或订阅者)。主题是发布者和订阅者之间的链接。订阅者可能会或可能不会确认发布的消息。