java - 何时、何地以及如何使用队列?

标签 java queue

我是企业 Java 开发的新手,尽管我确信这个问题同样适用于任何语言或平台,例如 .NET。

这是我有史以来第一次处理消息队列,我对它们很感兴趣。 (具体来说,我们正在使用 ActiveMQ)。我的技术主管希望 ActiveMQ 队列成为我们所有数据库和内部 Web 服务的领先者;因此,不是从客户端触发数据库查询并直接进入数据库,而是首先排队。

我的问题是:队列是否适合每个主要处理组件?最佳实践是否要求将它们放在通常会受到大量请求影响的系统组件前面?是否存在不应使用队列的情况?

感谢您提供任何见解!

最佳答案

以下是消息队列可能有用的一些示例。

资源有限
假设您有大量用户向服务发出请求。如果服务只能同时处理少量请求,那么您可以使用队列作为缓冲区。

服务解耦
一个关键的企业集成概念是系统解耦,例如工作流。它们不是让系统直接相互对话,而是异步地将消息发布到队列中。然后,集成组件将消息路由并传递到适当的系统。

消息回放
在上面的示例中,队列还可以提供可靠的请求传递和处理。如果工作流的一个组件损坏,其他组件不受影响,仍然可以操作并向损坏的组件发送消息。当损坏的组件恢复时,它可以处理所有排队的消息。

这里的关键概念是负载节流、松散耦合、可靠性和异步操作。

至于它们是否适用于每个主要组件,我会说不,这不是自动选择,您必须单独考虑每个组件。

关于java - 何时、何地以及如何使用队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7431054/

相关文章:

java - 在 flink yarn 集群上通过 maven 运行包含配置的 Java Jar

java - Java 处理链中的作业排队

scala - Akka:向持久邮箱添加延迟

java - 获取队列中最大号码位置的方法

java - LibGDX Sprite 上的黑色细边框

java - 是否可以扩展字节数组?

java - 数组舍入

java - While循环和switch

asp.net-core - 具有队列处理功能的 .NET 核心 Web api

java - 队列作为链表实现