Spring boot 网络客户端';强制关闭事件循环不接受其注册任务的通道';

Spring boot 网络客户端';强制关闭事件循环不接受其注册任务的通道';,spring-boot,spring-webclient,Spring Boot,Spring Webclient,我开发了一个与Auto2客户端\u凭据集成的WebClient @Autowired private WebClient webClient; List <Device> deviceList = new ArrayList<Device>(); public void getDeviceData(String macAddress) { logger.info("** start getDeviceData . **"); St

我开发了一个与Auto2客户端\u凭据集成的WebClient

@Autowired
private WebClient webClient;
List <Device> deviceList = new ArrayList<Device>();


public void getDeviceData(String macAddress) {
    logger.info("** start getDeviceData . **");

    String formatMac = macAddress.replaceAll("(.{2})", "$1"+":").substring(0,17);
    String request = "{ \"cmMac\": \""+formatMac+"\" }";
     
     webClient.post()
        .uri("https:......")
        .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).header(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
        .body(Mono.just(request), String.class)
        .attributes(ServerOAuth2AuthorizedClientExchangeFilterFunction.clientRegistrationId("...."))
        .retrieve()
        .bodyToMono(String.class)
        .doOnError(e -> logger.error(e.getMessage()))
        .doOnNext(s ->  {
            JsonObject convertedObject = new Gson().fromJson(s, JsonObject.class);
            Device device = new Device();
            device.setMacAddress(macAddress);
            deviceList.add(device);
        }).block();
}


@Override
public void run(String... args) throws Exception {
    getDeviceData("xxxxxxxx");
    
    for (Iterator iterator = deviceList.iterator(); iterator.hasNext();) {
        Device device = (Device) iterator.next();
        logger.info(device.getMacAddress());
    }
}
@Autowired
私人网络客户端网络客户端;
List deviceList=new ArrayList();
public void getDeviceData(字符串macAddress){
logger.info(“**启动getDeviceData.*”;
字符串formatMac=macAddress.replaceAll(“({2})”,“$1”+“:”)。子字符串(0,17);
字符串请求=“{\“cmMac\”:\”+formatMac+“\”}”;
webClient.post()
.uri(“https:……”)
.header(HttpHeaders.CONTENT\u TYPE,MediaType.APPLICATION\u JSON\u VALUE).header(HttpHeaders.ACCEPT,MediaType.APPLICATION\u JSON\u VALUE)
.body(Mono.just(请求)、String.class)
.attributes(ServerOAuth2AuthorizedClientChangeFilterFunction.clientRegistrationId(“..”)
.retrieve()
.bodyToMono(String.class)
.doon错误(e->logger.error(e.getMessage()))
.doOnNext(s->{
JsonObject convertedObject=new Gson().fromJson(s,JsonObject.class);
设备=新设备();
设备。设置macAddress(macAddress);
添加(设备);
}).block();
}
@凌驾
公共无效运行(字符串…参数)引发异常{
获取设备数据(“xxxxxxxx”);
for(Iterator Iterator=deviceList.Iterator();Iterator.hasNext();){
设备设备=(设备)迭代器.next();
logger.info(device.getMacAddress());
}
}
因为我还在开发阶段,所以我使用STS来运行程序。一般来说,该函数工作良好,它将检索访问令牌,然后对在线服务进行post调用

当我需要更改代码并保存文件时,程序将失败,并出现以下错误:

  : Force-closing a channel whose registration task was not accepted by an event loop: [id: 0xba25b296]

 java.util.concurrent.RejectedExecutionException: event executor terminated
at io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:926) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:353) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:346) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:828) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:818) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.channel.AbstractChannel$AbstractUnsafe.register(AbstractChannel.java:471) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:87) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:81) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:323) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
at io.netty.bootstrap.AbstractBootstrap.register(AbstractBootstrap.java:227) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
at io.netty.resolver.dns.DnsNameResolver.<init>(DnsNameResolver.java:487) ~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
at io.netty.resolver.dns.DnsNameResolverBuilder.build(DnsNameResolverBuilder.java:488) ~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
at io.netty.resolver.dns.DnsAddressResolverGroup.newNameResolver(DnsAddressResolverGroup.java:114) ~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
at io.netty.resolver.dns.DnsAddressResolverGroup.newResolver(DnsAddressResolverGroup.java:92) ~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
at io.netty.resolver.dns.DnsAddressResolverGroup.newResolver(DnsAddressResolverGroup.java:77) ~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
at io.netty.resolver.AddressResolverGroup.getResolver(AddressResolverGroup.java:70) ~[netty-resolver-4.1.60.Final.jar:4.1.60.Final]
at reactor.netty.transport.TransportConnector.doResolveAndConnect(TransportConnector.java:208) ~[reactor-netty-core-1.0.5.jar:1.0.5]
at reactor.netty.transport.TransportConnector.lambda$connect$2(TransportConnector.java:103) ~[reactor-netty-core-1.0.5.jar:1.0.5]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) ~[reactor-core-3.4.4.jar:3.4.4]
at reactor.netty.transport.TransportConnector$MonoChannelPromise._subscribe(TransportConnector.java:526) ~[reactor-netty-core-1.0.5.jar:1.0.5]
at reactor.netty.transport.TransportConnector$MonoChannelPromise.lambda$subscribe$0(TransportConnector.java:446) ~[reactor-netty-core-1.0.5.jar:1.0.5]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.60.Final.jar:4.1.60.Final]
at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]
:强制关闭其注册任务未被事件循环接受的通道:[id:0xba25b296]
java.util.concurrent.RejectedExecutionException:事件执行器已终止
在io.netty.util.concurrent.SingleThreadEventExecutor.reject(SingleThreadEventExecutor.java:926)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.util.concurrent.SingleThreadEventExecutor.offerTask(SingleThreadEventExecutor.java:353)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java:346)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:828)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:818)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.channel.AbstractChannel$AbstractSafe.register(AbstractChannel.java:471)~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
在io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:87)~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
在io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:81)~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
在io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:323)~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
在io.netty.bootstrap.AbstractBootstrap.register(AbstractBootstrap.java:227)~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
在io.netty.resolver.dns.DnsNameResolver.(DnsNameResolver.java:487)~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
在io.netty.resolver.dns.DnsNameResolverBuilder.build(DnsNameResolverBuilder.java:488)~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
在io.netty.resolver.dns.DnsAddressResolverGroup.newnamesolver(DnsAddressResolverGroup.java:114)~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
在io.netty.resolver.dns.DnsAddressResolverGroup.newResolver(DnsAddressResolverGroup.java:92)~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
在io.netty.resolver.dns.DnsAddressResolverGroup.newResolver(DnsAddressResolverGroup.java:77)~[netty-resolver-dns-4.1.60.Final.jar:4.1.60.Final]
在io.netty.resolver.AddressResolverGroup.getResolver(AddressResolverGroup.java:70)~[netty-resolver-4.1.60.Final.jar:4.1.60.Final]
在reactor.netty.transport.TransportConnector.doResolveAndConnect(TransportConnector.java:208)~[reactor-netty-core-1.0.5.jar:1.0.5]
在reactor.netty.transport.TransportConnector.lambda$connect$2(TransportConnector.java:103)~[reactor-netty-core-1.0.5.jar:1.0.5]
在reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125)~[reactor-core-3.4.4.jar:3.4.4]
在reactor.netty.transport.TransportConnector$MonoChannelPromise.\u订阅(TransportConnector.java:526)~[reactor-netty-core-1.0.5.jar:1.0.5]
在reactor.netty.transport.TransportConnector$MonoChannelPromise.lambda$subscribe$0(TransportConnector.java:446)~[reactor-netty-core-1.0.5.jar:1.0.5]
在io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)~[netty-transport-4.1.60.Final.jar:4.1.60.Final]
在io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)~[netty-common-4.1.60.Final.jar:4.1.60.Final]
在java.base/java.lang.Thread.run(Thread.java:832)~[na:na]
我是WebClient的新手,不知道此错误的根本原因是什么

你知道这个场景有什么问题吗

谢谢