Hallo Ich versuche, den folgenden Ablauf mit Spring Integration zu implementieren. Setzen Sie den REST-Service frei, manipulieren Sie die Payload, schreiben Sie die geänderte Payload in JMS und antworten Sie auf den REST-Service.Spring Integration: REST zu JMS-Integration geben Timeout-Fehler
@Bean
public IntegrationFlow httpInputFlow() {
return IntegrationFlows
.from(Http.inboundGateway(“/company”)
.requestMapping(r -> r
.methods(HttpMethod.POST))
.requestPayloadType(com.poc.model.Company.class))
.transform(jsonToObjectTransformer())
.channel(requestChannel())
.get();
}
@Bean
@Transformer(inputChannel=“requestChannel”, outputChannel=“responseChannel”)
ObjectToJsonTransformer jsonToObjectTransformer() {
return new ObjectToJsonTransformer();
}
@Bean
public DirectChannel requestChannel() {
return MessageChannels.direct().get();
}
@Bean
public DirectChannel responseChannel() {
return MessageChannels.direct().get();
}
@Bean
IntegrationFlow outboundFlow() throws Exception {
return IntegrationFlows.from(responseChannel()) .handle(Jms.outboundAdapter(connectionFactory()).destination(“samplequeue”))
.get();
}
Die Nutzdaten der Anforderung erreichen die Warteschlange. Der REST-Service-Timeout ohne Antwort. Ich brauche die umgewandelte Nutzlast, die in die Warteschlange gestellt und auch an die Antwort für den Restdienst gesendet werden soll. Ich konnte keine verfügbaren Beispiele finden.
Jede Hilfe wird geschätzt.
danke Artem, werde dies versuchen. – jack
können Sie beraten, wie Sie den Bridge-Handler in .bridge() übergeben? Die Bridge-Methode erwartet Consumer> als Argument. Und die Beispiele sind in XML, nicht in Java dsl. –
jack
Muss '.brdige (null)' sein. Wir haben '.bridge()' ohne Argumente hinzugefügt, nachdem wir Java DSL nach Spring Integration Core in 5.0 verschoben haben. –