跳到主要内容

系统管理

QWen Plus 中英对照 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。