首页 课程 师资 教程 报名

Java消息队列的介绍

  • 2022-03-29 11:51:14
  • 2626次 动力节点

什么是消息队列?

消息队列是一种异步服务到服务通信的形式,用于无服务器和微服务架构。在消息队列中,消息的发送者和接收者不需要同时交互,消息被保留在Java队列中,直到接收者检索它们。

消息队列的好处

消息队列可用于解耦重量级处理、缓冲或批处理工作以及平滑尖峰工作负载。

更好的性能

消息队列支持异步通信,这意味着产生和使用消息的端点与队列交互,而不是彼此交互。生产者可以将请求添加到队列中,而无需等待它们被处理。消费者仅在消息可用时才处理它们。系统中的任何组件都不会停止等待另一个优化数据流。

提高可靠性

队列使您的数据持久化,并减少系统不同部分脱机时发生的错误。通过使用消息队列分隔不同的组件,您可以创建更多的容错性。如果系统的一部分永远无法访问,另一部分仍然可以继续与队列交互。队列本身也可以镜像以获得更高的可用性。

粒度可扩展性

消息队列可以在您需要的地方精确扩展。当工作负载达到峰值时,应用程序的多个实例都可以将请求添加到队列中,而不会发生冲突。随着这些传入请求的队列变长,您可以将工作负载分配给一组消费者。生产者、消费者和队列本身都可以按需增长和收缩。

简化解耦

消息队列消除了组件之间的依赖关系,并显着简化了解耦应用程序的编码。软件组件不受通信代码的影响,而是可以设计为执行离散的业务功能。

消息队列是一种非常简单的解耦Java分布式系统的方法,无论您使用的是单体应用程序、微服务还是无服务器架构。

消息队列的类型

点对点

点对点意味着消息通过队列从一个应用程序(生产者/发送者)发送到另一个应用程序(消费者/接收者)。可以有多个消费者在一个队列上监听,但只有其中一个可以接收消息。因此,它是点对点或一对一。

发布/订阅

 

消息队列服务器

消息队列服务器有多种语言版本。例如 Erlang (RabbitMQ)、C (beanstalkd)、Ruby (Starling 或 Sparrow)、Scala (Kestrel、Kafka) 和 Java (ActiveMQ)。选择特定的消息队列服务器完全取决于用例。

另一方面,发布/订阅是一种消息传递模型,其中消息通过主题发送给多个消费者(或订阅者)。主题是发布者和订阅者之间的链接。订阅者可能会或可能不会确认发布的消息。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交