我想运行多个Wiremock服务器(比方说3)。我该怎么做?如果并且一旦我启动这3个服务器,我希望所有3个端口都有存根。
现在,对localhost:somePort / a / b的调用将查找urlPath设置为/ a / b的存根。如何确保它与完整的localhost:somePort / a / b URL 匹配,而不仅与相对路径匹配?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要在本地运行多个Wiremock服务器,您需要为每个服务器指定不同的端口,并且可以分别为它们配置存根。以下是一种方法来实现您的需求:
首先,确保您已经安装了Wiremock并能够正常运行一个实例。然后,为每个服务器选择不同的端口号(例如8080、8081、8082)。
对于每个Wiremock实例,您可以在命令行中使用以下格式启动:
java -jar wiremock-jre8-standalone-{version}.jar --port {port_number} --verbose
替换{version}
为您下载的Wiremock版本号,{port_number}
分别用8080、8081、8082等。
如果您是在Java项目中集成Wiremock,可以通过编程方式启动多个服务器:
import com.github.tomakehurst.wiremock.WireMockServer;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
public class MultiWiremockExample {
public static void main(String[] args) {
int[] ports = {8080, 8081, 8082};
for (int port : ports) {
WireMockServer server = new WireMockServer(port);
server.start();
// 配置存根,这里以8080为例,实际应用中根据需要配置
if (port == 8080) {
server.stubFor(get(urlEqualTo("/a/b"))
.willReturn(aResponse().withBody("Response from port " + port)));
}
// 其他逻辑...
}
}
}
默认情况下,Wiremock会基于相对路径匹配请求。要确保它与完整的URL(包括端口)匹配,您需要在配置存根时使用urlPathMatching
或直接使用urlEqualTo
,如上面代码示例所示。这将确保只有当请求的URL完全匹配时,才会返回相应的存根响应。
通过上述步骤,您可以成功运行多个Wiremock服务器,并确保它们根据完整的URL进行匹配。您也可以通过ECS一键诊断全面排查并修复ECS问题。