如何解决RejectedExecutionException:事件执行程序通过静态WireMockServer终止,但是使用@AutoConfigureWiremock可以
Caused by: reactivefeign.client.ReactiveFeignException: java.util.concurrent.RejectedExecutionException: event executor terminated
at reactivefeign.webclient.client.WebReactiveHttpClient.lambda$executeRequest$2(WebReactiveHttpClient.java:88)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
|_ checkpoint ⇢ Handler app.controller.OrderController#cancelOrderByUser() [dispatcherHandler]
Stack trace:
at reactivefeign.webclient.client.WebReactiveHttpClient.lambda$executeRequest$2(WebReactiveHttpClient.java:88)
at reactor.core.publisher.Mono.lambda$onErrorMap$30(Mono.java:3284)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:88)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:1994)
at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onError(FluxContextStart.java:110)
at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:129)
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:181)
at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:252)
at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onError(FluxPeekFuseable.java:894)
at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onError(FluxPeekFuseable.java:894)
at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:87)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onError(MonoFlatMapMany.java:197)
at reactor.core.publisher.FluxRetryPredicate$RetryPredicateSubscriber.onError(FluxRetryPredicate.java:101)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:185)
at reactor.netty.http.client.HttpClientConnect$MonoHttpConnect$TcpClientSubscriber.onError(HttpClientConnect.java:349)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:185)
at reactor.netty.resources.PooledConnectionProvider$disposableAcquire.onError(PooledConnectionProvider.java:500)
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:396)
at reactor.netty.internal.shaded.reactor.pool.SimplePool.lambda$drainLoop$7(SimplePool.java:206)
at reactor.core.publisher.LambdamonoSubscriber.doError(LambdamonoSubscriber.java:152)
at reactor.core.publisher.LambdamonoSubscriber.onError(LambdamonoSubscriber.java:147)
at org.springframework.security.test.context.support.ReactorContextTestExecutionListener$DelegateTestExecutionListener$SecuritySubContext.onError(ReactorContextTestExecutionListener.java:110)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:185)
at reactor.netty.resources.PooledConnectionProvider$PooledConnectionAllocator$PooledConnectionInitializer.operationComplete(PooledConnectionProvider.java:281)
at reactor.netty.resources.PooledConnectionProvider$PooledConnectionAllocator.lambda$connectChannel$0(PooledConnectionProvider.java:224)
at reactor.core.publisher.MonoCreate.subscribe(MonoCreate.java:57)
at reactor.core.publisher.Mono.subscribe(Mono.java:4218)
at reactor.core.publisher.Mono.subscribeWith(Mono.java:4329)
at reactor.core.publisher.Mono.subscribe(Mono.java:4189)
at reactor.core.publisher.Mono.subscribe(Mono.java:4125)
at reactor.netty.internal.shaded.reactor.pool.SimplePool.drainLoop(SimplePool.java:201)
at reactor.netty.internal.shaded.reactor.pool.SimplePool.drain(SimplePool.java:172)
at reactor.netty.internal.shaded.reactor.pool.SimplePool.doAcquire(SimplePool.java:132)
at reactor.netty.internal.shaded.reactor.pool.AbstractPool$Borrower.request(AbstractPool.java:351)
at reactor.netty.resources.PooledConnectionProvider$disposableAcquire.onSubscribe(PooledConnectionProvider.java:511)
expected: <200> but was: <500>
org.opentest4j.AssertionFailedError: expected: <200> but was: <500>
at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:55)
at org.junit.jupiter.api.AssertionUtils.failNotEqual(AssertionUtils.java:62)
at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:150)
at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:145)
at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:510)
测试失败:
@Test
void grantedAccesstoUndoPaymentEndpointtest() throws IOException {
SimpleCartOutputDTO simpleCartOutputDTO = new SimpleCartOutputDTO();
wiremockServer.stubFor(post(urlPathEqualTo("/order/cancel"))
.willReturn(aResponse()
.withStatus(HttpStatus.OK.value())
.withHeader("Content-Type",MediaType.APPLICATION_JSON_VALUE)
));
Response response = given()
.contentType(MediaType.APPLICATION_JSON_VALUE)
.header("x-vp-mid","1")
.header("x-vp-msite","3")
.post("http://localhost:" + port + "/orderpiper/order/cancel-order");
assertEquals(HttpStatus.OK.value(),response.getStatusCode());
}
首先,我将wiremockServer
定义为类的静态成员,从端口8090
开始。
然后,更改为它,开始工作:
@SpringBoottest(webEnvironment = SpringBoottest.WebEnvironment.DEFINED_PORT)
@AutoConfigurewiremock(port = 0)
...
@Autowired
private wiremockServer wiremockServer;
为什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。