Ich benutze Spring-Integration, um einige HTTP-Anfrage zu tun und dann analysieren es schließlich speichern in der Datenbank Ich möchte Zugriff auf App
Objekt in konvertieren Methode, wie Sie sehen können App
Objekt ist Argument der download
Methode (die von einem anderen Kanal aufgerufen wird), Was ist die Lösung?
Hier ist mein Code:Spring Integration über mehrere Argumente zwischen Methoden
@ServiceActivator(inputChannel = "channel1", outputChannel = "channel2")
public ResponseEntity<DetailsItemParser[]> download(App app)
{
String url = config.getAppDetailUrl();
try
{
SSLUtil.turnOffSslChecking();
}
catch (Exception e)
{
LOG.error(e.getMessage());
}
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));
HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);
detailsCrawlerRestTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
ResponseEntity<DetailsItemParser[]> responseEntity = detailsCrawlerRestTemplate.exchange(url, HttpMethod.GET, requestEntity, DetailsItemParser[].class, app.getExternalId());
return responseEntity;
}
@Splitter(inputChannel = "channel2", outputChannel = "channel3")
public List<DetailsItemParser> scrape(ResponseEntity<DetailsItemParser[]> payload)
{
return new ArrayList<>(Arrays.asList(payload.getBody()));
}
@Filter(inputChannel = "channel3", outputChannel = "channel4")
public boolean filter(DetailsItemParser detailsItemParser)
{
final Set<ConstraintViolation<DetailsItemParser>> violations = validator.validate(detailsItemParser);
if (violations != null && !violations.isEmpty())
{
return false;
}
return true;
}
@Transformer(inputChannel = "channel4", outputChannel = "channel5")
public App convert(DetailsItemParser payload)
{
App app = appRepository.findById(payload.getId());
LOG.info("entry={}", o.toString());
return null;
}
Danke. Wie kann ich HeaderEnricher mit Spring Boot und Java verwenden? – Ali
Können Sie bitte einen Beispiel-Java-Code mit HeaderEnricher schreiben? – Ali
Siehe ein UPDATE in meiner Antwort. –