Expose Application Metrics and Information
要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中:
这将使在管理和监视功能得到实现。从监控角度来看,WildFly小组公开了一些基本指标:
• 关于WildFly群集在/节点上运行的节点信息
• JVM的堆的使用情况
• JVM 进程/线程信息
我们还可以添加自己的健康端点,可以调用一些操作或查询我们的微服务部分来轻松地揭示我们的服务正在做什么。您可以利用大多数现代集群的内置健康检查探针来调用您的微服务健康端点来确定在是否健康,在某些情况下,只需杀死它并重新启动。请参阅在文档,以获得更多关于添加健康探针的文档。
How to Run This Outside of Maven
我们已经看到了几种方法来运行我们的WildFly群。对于开发,您可能会使用这样的maven插件运行:
当您构建二进制文件时,您可以运行它如下:
这将把我们的项目,无论是打包成一个JAR还是WAR(由您的pom.xml中的<pacjaging>定义所指定),并将其转换为一个可执行的 JAR 。然后可以这样运行:
请注意,无论您的最终构建工件的名称是什么,WildFlySwar-Maven 插件都会在名称中添加 -swar.jar 扩展。
Calling Another Service
在微服务环境中,每个服务负责向其他协作者提供功能或服务。如果我们希望扩展“HelloWorld”微服务,我们将需要创建一个可以使用JAX-RS客户端功能调用的服务。就像我们为SpringBoot微服务所做的那样,我们将从随书附带的源代码中利用后端服务。交互看起来类似于:
如果您查看这本书的源代码,我们将看到一个名为Backend的Maven模块,它包含一个非常简单的HTTPservlet,可以通过GET请求和查询参数调用它。此后端的代码非常简单,并且不使用任何微服务器-副框架( SpringBoot、Dropwizard 或 WildFly Swarm)。
要在端口8080上启动后端服务,导航到后端目录并运行以下命令:
该服务在/api/backend公开,并接受一个查询参数问候语。例如,当我们使用以下路径/api/backend?greeting=Hello 调用此服务时,后端服务将使用如下所示的JSON对象进行响应:
我们可能看到的信息如下:
我们将创建一个新的HTTP端点,/API/greeting,包含在我们的WildFly Swarm hola-wildflyswarm 示例中,并使用 JAX-RS 客户端来调用这个后端!
在src/main/java/com/redhat/examples/wfswarm/rest 中创建一个名为 GreeterResource 的新类,并将其填入类似于我们为 HolaResource 所做的操作,如示例4-1所示。
我们在这里创建了一个简单的 JAX-RS 资源,它公开了一个/API/greeting端点,它只返回BackendServiceUrl 字段的值。还请注意,如果没有设置环境变量,我们将后端主机和端口注入为具有默认值的环境变量。再说一遍,我们只是使用 DeltaSpike @ConfigPropty 来实现这一点。
让我们还添加BackendDTO类,如示例4-2所示,该类用于封装来自后端的响应。
接下来,让我们添加我们的JAX-RS客户端实现来与后端服务通信。它应该看起来像示例4-3。
现在,我们可以使用命令行中的Maven来构建我们的微服务;或者,如果您仍然在JBossForge中,则可以运行Build命令:
或者
当我们启动 WildFly 集群微服务时,我们需要指定一个新的 HTTP 端口(因为后端服务已经在端口8080上运行),或者我们只需要指定一个端口偏移。如果我们指定一个端口偏移量,WildFly Swarm将尝试在其默认端口8080下部署;但是如果该端口已经在使用中,那么它将增加该端口的swar.port.offset,然后再试一次。如果我们使用1的偏移量,并且8080端口上有冲突,那么8081端口将是WildFlyS付款尝试的下一个目标。让我们运行带有端口偏移的微服务:
现在,让我们导航浏览器到http:/localhost:8081/api/greeting,看看我们的微服务是否正确地调用后端并显示我们所期望的:
Where to Look Next
在这一章中,我们了解了WildFly Swarm,并看到了与 Dropwizard 和 Spring Boot 的不同之处和相似之处。我们还学习了如何公开 REST 端点、配置和度量,以及如何调用外部服务。这是一个快速介绍 WildFly Swarm,决不是一个全面的指南。有关更多信息,请参见下列链接:
-
WildFly Swarm
-
WildFly Swarm documentation
-
WildFly Swarm examples on GitHub
-
WildFly Swarm Core examples on GitHub
-
WildFly Swarm blog
-
http://wildfly-swarm.io/community/
原文:
作者源码:https://github.com/redhat-developer/microservices-by-example-source
有什么讨论的内容,可以加我微信公众号:
来源:oschina
链接:https://my.oschina.net/u/2277632/blog/1833338