如何模拟一个真正运行的应用程序?

如果 MS2 正在运行,我的一个微服务 [ MS1] 在启动时检查另一个微服务 [ ]。MS2如果 MS2 正在运行,MS1 将启动,否则无法启动。

但目前我正在MS2我的本地机器上运行,这需要大量的RAMans 减慢我的机器。

是否有任何机制使得当 MS1 启动并查找 MS2 时,似乎 MS2 正在运行但实际上没有运行真正的 MS2?


更新 :

假设 MS2 正在运行localhost:1234,现在 MS1 将使用 REST 连接到它。


凤凰求蛊
浏览 115回答 2
2回答

胡子哥哥

你可以看看WireMock哪个是 HTTP API 的模拟器,所以它适合本地开发。使用它时,您将能够模拟微服务,就好像它作为独立的微服务在给定的主机和端口上运行一样。您可以将它作为独立进程运行,也可以作为 spring 应用程序的一部分运行。选项 1 - 配置独立的 wiremock 服务器:下载Wiremock 独立 jar使用端口在本地主机上运行独立服务器1234:java -jar wiremock-standalone-2.24.0.jar --port 1234配置 MS1 微服务以用作localhost:1234MS2 主机。用一些响应模拟你的 MS2(用 wiremock 模拟)端点:curl -X POST --data '{ "request": { "url": "/yourendpoint", "method": "GET" }, "response": { "status": 200, "body": "Response" }}' http://localhost:1234/__admin/mappings/new在这里我们做了一个模拟,当您使用 HTTP GET 访问模拟服务器时,/yourendpoint您将收到文本Response作为响应。现在,当您使用 GET 时,localhost:1234/yourendpoint您会得到模拟的响应:curl http://localhost:1234/yourendpointResponse完整的例子可以在Wiremock Standalone docs选项 2 - 在 Spring 应用程序中配置 WireMock 服务器:添加WireMock dependency到您的项目(注意不仅要将其添加到测试范围)创建一个用于设置服务器的 Spring bean:@Componentpublic class CustomMicroserviceMock {    private WireMockServer wireMockServer;    public CustomMicroserviceMock() {        wireMockServer = new WireMockServer(options().port(1234));        wireMockServer.stubFor(get(urlEqualTo("/yourendpoint"))                .willReturn(aResponse()                        .withHeader("Content-Type", "text/plain")                        .withBody("Response")));        wireMockServer.start();    }    @PreDestroy    void preDestroy() {        wireMockServer.stop();    }}当我们点击时,localhost:1234/yourendpoint我们得到回应:Response这只是一个 POC,但它在两种情况下都有效。

摇曳的蔷薇

我建议在您的本地机器上使用 WireMock 作为独立服务,或者如果您熟悉 docker,您可以检查 wiremock docker 图像:我将它用于我的开发和测试,它确实是一个强大的存根解决方案:)祝你好运
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java