【发布时间】:2020-06-22 18:36:04
【问题描述】:
package com.example.stubrunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.contract.stubrunner.server.EnableStubRunnerServer;
import org.springframework.cloud.contract.wiremock.WireMockConfigurationCustomizer;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
@EnableStubRunnerServer
public class StubRunnerApplication {
public static void main(String[] args) {
SpringApplication.run(StubRunnerApplication.class, args);
}
@Bean
public WireMockConfigurationCustomizer optionsCustomizer() {
WireMockConfigurationCustomizer customizer = new WireMockConfigurationCustomizer() {
@Override
public void customize(com.github.tomakehurst.wiremock.core.WireMockConfiguration config) {
config.jettyHeaderBufferSize(16384);
}
};
return customizer;
}
}
上面的customizer bean 似乎没有任何作用。此功能没有太多文档。使用安全令牌标头,Wiremock (jettty) 的默认值太少了。
我使用 start.spring.io 和(当前)默认值:spring boot 2.5.5。和春云Hoxton.SR3。
java -jar wiremock-standalone-2.26.3.jar --jetty-header-buffer-size 16384
工作得很好。
编辑:
package com.example.wiremockrunnerlatest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.contract.stubrunner.server.EnableStubRunnerServer;
import org.springframework.cloud.contract.stubrunner.spring.AutoConfigureStubRunner;
@SpringBootApplication
@EnableStubRunnerServer
@AutoConfigureStubRunner(httpServerStubConfigurer = HeaderSizeConfigurer.class)
public class WiremockRunnerLatestApplication {
public static void main(String[] args) {
SpringApplication.run(WiremockRunnerLatestApplication.class, args);
}
}
...然后:
public class HeaderSizeConfigurer extends WireMockHttpServerStubConfigurer {
@Override
public WireMockConfiguration configure(WireMockConfiguration httpStubConfiguration, HttpServerStubConfiguration httpServerStubConfiguration) {
return httpStubConfiguration.jettyHeaderBufferSize(16384);
}
}
【问题讨论】:
-
我们现在的答案是,单独使用普通的 Wiremock,忘记 SCC 存根运行器。 “stub runner”的想法很好,但在配置选项方面并不完整。
-
您使用了错误的定制器。请查看cloud.spring.io/spring-cloud-contract/reference/html/…,我们在其中描述了如何使用带有wiremock 配置的stub runner。 " 附带一个可以为 WireMock 扩展的实现:org.springframework.cloud.contract.stubrunner.provider.wiremock.WireMockHttpServerStubConfigurer。在 configure 方法中,您可以为给定的存根提供自己的自定义配置。用例可能是在 HTTPS 端口上为给定的工件 ID 启动 WireMock。"
-
编辑后添加:没有帮助。是否有任何工作示例、测试或我可以检查的东西?
标签: wiremock spring-cloud-contract