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 (将#修改为@)