生产就绪功能
Spring Modulith 支持将有关系统的架构信息公开为 Spring Boot 执行器端点,以及通过捕获指标和跟踪来观察应用程序模块之间的交互。 由于生产就绪的应用程序可能需要两者,因此激活这些功能的最便捷方法是使用 Spring Modulith Insight Starters,如下所示:
-
Maven
-
Gradle
<dependency>
<groupId>org.springframework.modulith</groupId>
<artifactId>spring-modulith-starter-insight</artifactId>
<version>1.3.0</version>
<scope>runtime</scope>
</dependency>
dependencies {
runtimeOnly 'org.springframework.modulith:spring-modulith-starter-insight:1.3.0'
}
这将包括 actuator 和 observability 支持以及 Spring Boot 的 actuator startup,以提供对 actuator 的一般支持。 请注意,您仍然需要添加更多依赖项,才能将应用程序连接到监控工具,例如 Zipkin、Wavefront 等,通常通过 OpenTelemetry 或 Brave。 在 Spring Boot 参考文档的相应部分中找到更多信息。
应用模块 执行器
应用程序模块结构可以作为 Spring Boot 执行器公开。
要启用 Actuator,请将依赖项添加到项目中:spring-modulith-actuator
-
Maven
-
Gradle
<dependency>
<groupId>org.springframework.modulith</groupId>
<artifactId>spring-modulith-actuator</artifactId>
<version>1.3.0</version>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot actuator starter required to enable actuators in general -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>…</version>
<scope>runtime</scope>
</dependency>
dependencies {
runtimeOnly 'org.springframework.modulith:spring-modulith-actuator:1.3.0'
}
<!-- Spring Boot actuator starter required to enable actuators in general -->
dependencies {
runtimeOnly 'org.springframework.boot:spring-boot-starter-actuator'
}
现在运行应用程序将公开一个 actuator 资源:modulith
GET http://localhost:8080/actuator
{
"_links": {
"self": {
"href": "http://localhost:8080/actuator",
"templated": false
},
"health-path": {
"href": "http://localhost:8080/actuator/health/{*path}",
"templated": true
},
"health": {
"href": "http://localhost:8080/actuator/health",
"templated": false
},
"modulith": { (1)
"href": "http://localhost:8080/actuator/modulith",
"templated": false
}
}
}
1 | 通告的 actuator 资源。modulith |
资源遵循以下结构:modulith
JSONPath | 描述 |
---|---|
|
应用程序模块的技术名称。中模块引用的目标。 |
|
应用程序模块的可读名称。 |
|
应用程序模块的基础包。 |
|
应用程序模块的所有传出依赖项 |
|
应用程序模块所依赖的名称。对 . |
|
目标模块的依赖项类型。可以是 (simple type dependency)、(Spring bean dependency) 或 . |
示例模块排列如下所示:
{
"a": {
"basePackage": "example.a",
"displayName": "A",
"dependencies": []
},
"b": {
"basePackage": "example.b",
"displayName": "B",
"dependencies": [ {
"target": "a",
"types": [ "EVENT_LISTENER", "USES_COMPONENT" ]
} ]
}
}
观察应用程序模块
应用程序模块之间的交互可以被拦截以创建 Micrometer 跨度,最终形成您可以在 Zipkin 等工具中可视化的跟踪。 要激活检测,请将以下运行时依赖项添加到您的项目中:
-
Maven
-
Gradle
<dependency>
<groupId>org.springframework.modulith</groupId>
<artifactId>spring-modulith-observability</artifactId>
<version>1.3.0</version>
<scope>runtime</scope>
</dependency>
dependencies {
runtimeOnly 'org.springframework.modulith:spring-modulith-observability:1.3.0'
}
您必须配置额外的基础设施依赖项,具体取决于要通过管道传输可观测性元数据的工具。 有关详细信息,请查看相应的 Spring Boot 文档,了解你的设置要包含哪些依赖项。 |
这将导致作为应用程序模块 API 一部分的所有 Spring 组件都装饰有一个方面,该方面将拦截调用并为它们创建千分尺跨度。 如下所示:
在这种特殊情况下,触发付款会更改订单的状态,从而导致触发订单完成事件。 这由引擎异步获取,该引擎触发订单上的另一个状态更改,工作几秒钟,然后依次触发订单的最终状态更改。