2017-06-27 12 views
1

私は、データを交換するためのシステム統合バネ統合を使用しています。 AppClientのAppServerはTableInfoRequestとAppServerを使用して応答し、TableInfoResponse.Itは正常に動作します。春の統合でHTTP 204で応答する方法

  

    @MessagingGateway() 
    public interface SyncGateway { 

     @Gateway(requestChannel = "requestFlow.input") 
     TableInfoResponse info(TableInfoRequest payload); 

    } 

しかし、私は応答してデータを削減する応答にHTTPコード204データなしで応答します。だから私はどのようにDSLを設定できますか?

 

    @Bean 
     public IntegrationFlow syncFlow() { 
     return IntegrationFlows 
      .from(
       Http.inboundGateway(HTTP_ENDPOINT_PATH).id("syncGateway") 
       .replyTimeout(serverProps.getReplyTimeout() * 1000) 
       .requestTimeout(serverProps.getRequestTimeout() * 1000) 
       .messageConverters(new SerializingHttpMessageConverter()) 
       .convertExceptions(true) 
       .mappedResponseHeaders(IDENTIFICATION, TOKEN)) 
      .channel(c -> c.direct("syncChannel") 
       .interceptor(new ChannelAuthenticationInterceptor(dataService))) 
      .handle(syncHandler) 
      .get(); 
     } 

syncHandlerはTableInfoResponse.AndでappclientがtableInfoResponseを取得するために syncGateway.info(リクエスト)を使用し返されます。

答えて

0

返信メッセージにHttpHeaders.STATUS_CODEヘッダー(http_statusCode)を設定します。

+0

つまり、 '204 No Content'返信を返すには、本当にそれを行うべきです - ' HttpStatus.NO_CONTENT'でInbond Gatewayに返信してください:http://docs.spring.io/spring-integration /reference/html/http.html#http-response-statuscode –

+0

あなたの答えをありがとうございます。しかし、私はデータがない場合204に返信する方法を理解していません。 '.handle(syncHandler)'もオブジェクトに返信します。また、AppClientはオブジェクトを受け取ることも望みます - '.expectedResponseType(Serializable.class)' – Roy

関連する問題