【发布时间】:2021-07-19 14:58:07
【问题描述】:
我正在尝试在我的 Spring Integration 应用程序中使用 webClient。
使用block() 方法我得到了这个错误:
org.springframework.messaging.MessageHandlingException: error occurred during processing message in 'MethodInvokingMessageProcessor' [org.springframework.integration.handler.MethodInvokingMessageProcessor@28b67bb]; nested exception is java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-4
at org.springframework.integration.support.utils.IntegrationUtils.wrapInHandlingExceptionIfNecessary(IntegrationUtils.java:192) ~[spring-integration-core-5.4.5.jar:5.4.5]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
所以我删除了block 以防止出现问题,但我看起来没有那个调用就不会执行。不知道怎么弄的
激活器
@ServiceActivator(
inputChannel = "lisContractValidationChannel",
outputChannel = "aopContractValidationReplyAndContinueRouterChannel"
)
public Application sendEContract(Application application) {
ContractRequest contractRequest = prepareRequest(application);
lisOperations.verifyContract(contractRequest,
application.getContractData().getRouteOne().getConversationID(),
application.getRouteOneId());
return application;
}
运营
private final WebClient webClient;
@Override
public void verifyContract(
EContractRequest contractRequest,
String vendorTransactionId,
String loanId) {
webClient.post()
.uri(baseUrl + contract)
.header("sourceRequestId", sourceRequestId)
.header("VENDOR-ID", String.join(";", List.of(vendorId, vendorTransactionId, loanId)))
.bodyValue(contractRequest).retrieve().toEntity(LisResponse.class);
}
WebClient 配置
@Bean
public WebClient webClient(MetricsDTWebClientFilterFunction metricsDTWebClientFilterFunction) {
HttpClient httpClient = HttpClient
.create();
final WebClient.Builder webClientBuilder = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.codecs(ClientCodecConfigurer::defaultCodecs)
.filter(metricsDTWebClientFilterFunction);
return webClientBuilder.build();
}
【问题讨论】:
标签: spring-integration webclient spring-webclient