跳到主要内容
版本:7.0.2

系统管理

DeepSeek V3 中英对照 System Management

章节总结

📄️ 消息历史

消息架构的关键优势在于松耦合,使得参与组件之间无需相互感知。仅凭这一点,应用程序就具备了极高的灵活性——您可以更换组件而不影响整体流程、调整消息路由、改变消息消费方式(轮询与事件驱动)等。然而,当系统出现故障时,这种看似简单的架构模式可能会带来调试难题。在调试过程中,您往往需要获取关于消息的尽可能多的信息(包括其来源、经过的通道以及其他细节)。

📄️ 元数据存储

许多外部系统、服务或资源不具备事务性(例如Twitter、RSS、文件系统等),并且无法将数据标记为已读。此外,在某些集成解决方案中,您可能需要实现企业集成模式中的幂等接收器。为实现这一目标,并在与外部系统进行下一次交互之前存储端点的某些先前状态,或处理下一条消息,Spring Integration 提供了元数据存储组件,作为 org.springframework.integration.metadata.MetadataStore 接口的实现,遵循通用的键值约定。

📄️ 分布式锁

在许多情况下,针对某个上下文(甚至单个消息)的操作必须以独占方式执行。一个例子是聚合器组件,我们必须检查当前消息的消息组状态,以确定是否可以释放该组,或者仅将该消息添加以供将来考虑。为此,Java 提供了带有 java.util.concurrent.locks.Lock 实现的 API。然而,当应用程序是分布式的和/或在集群中运行时,问题变得更加复杂。在这种情况下,锁定具有挑战性,需要一些共享状态及其特定方法来实现独占性要求。

📄️ 集成图

从 4.3 版本开始,Spring Integration 提供了对应用程序运行时对象模型的访问,该模型可以选择性地包含组件指标。它以图的形式暴露,可用于可视化集成应用程序的当前状态。o.s.i.support.management.graph 包包含了所有必需的类,用于收集、构建和渲染 Spring Integration 组件的运行时状态,并将其作为一个单一的树状 Graph 对象。应声明 IntegrationGraphServer 作为 bean 来构建、检索和刷新 Graph 对象。生成的 Graph 对象可以序列化为任何格式,尽管 JSON 在客户端解析和表示方面既灵活又方便。一个仅包含默认组件的 Spring Integration 应用程序将暴露如下所示的图:

📄️ 集成图控制器

如果你的应用程序是基于Web的(或构建在带有嵌入式Web容器的Spring Boot之上),并且Spring Integration HTTP或WebFlux模块(分别参见HTTP支持和WebFlux支持)存在于类路径中,你可以使用IntegrationGraphController将IntegrationGraphServer的功能作为REST服务公开。为此,HTTP模块中提供了@EnableIntegrationGraphController和@Configuration类注解以及int-http:graph-controller/ XML元素。结合@EnableWebMvc注解(或XML定义中的mvc:annotation-driven/),此配置会注册一个IntegrationGraphController @RestController,其@RequestMapping.path可以在@EnableIntegrationGraphController注解或int-http:graph-controller/元素上进行配置。默认路径为/integration。