У меня есть следующая конфигурация для отправки SOAP запросов в рамках процесса интеграции, где uriDefinedInApplicationProperties
- это фиксированный uri, определенный в файле application.properties:
@Bean
public MarshallingWebServiceOutboundGateway outboundSOAPGateway()
{
final MarshallingWebServiceOutboundGateway outboundGateway = new MarshallingWebServiceOutboundGateway(
uriDefinedInApplicationProperties,
requestMarshaller,
responseMarshaller);
outboundGateway.setAdviceChain(Collections.singletonList(retryOutboundGatewayAdvice));
if (soapActionCallback!= null) {
outboundGateway.setRequestCallback(soapActionCallback);
}
return outboundGateway;
}
Теперь я есть требование, чтобы URI удаленного SOAP сервера создавался динамически (я планирую использовать заголовки сообщений для хранения URI).
Я хотел сделать что-то вроде следующего, но MarshallingWebServiceOutboundGateway делает кажется, не поддерживает, и я не смог найти, как сделать что-то подобное, используя пружинную интеграцию DSL:
@Bean
public MarshallingWebServiceOutboundGateway outboundSOAPGateway()
{
final MarshallingWebServiceOutboundGateway outboundGateway = new MarshallingWebServiceOutboundGateway(
message -> (message -> message.getHeaders().get("remote.uri.header"),
requestMarshaller,
responseMarshaller);
outboundGateway.setAdviceChain(Collections.singletonList(retryOutboundGatewayAdvice));
if (soapActionCallback!= null) {
outboundGateway.setRequestCallback(soapActionCallback);
}
return outboundGateway;
}
Я заметил, что MarshallingWebServiceOutboundGateway
имеет метод setUriVariableExpressions(Map<String, Expression> uriVariableExpressions)
, но я не нашел четкой документации о том, что он должен делать и как он работает.
Также я попытался сделать что-то вроде следующего для создания исходящего шлюза, но, похоже, он не поддерживает requestCallbacks или совет chain.
Http.outboundGateway(message -> message.getHeaders().get("remote.uri.header"))
.messageConverters(new MarshallingHttpMessageConverter(
remoteRequestMarshaller,
remoteResponseMarshaller));
Каков наилучший способ создания исходящего шлюза SOAP с рекомендациями по повторным попыткам и сгенерированным динамически URI?