我有一个系统使用spring集成来交换数据。 AppClient请求具有TableInfoRequest和AppServer的AppServer将响应TableInfoResponse.It现在工作正常。
@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使用 syncGateway.info(request)来获取tableInfoResponse。
答案 0 :(得分:0)
在回复邮件中设置HttpHeaders.STATUS_CODE
标题(http_statusCode
)。
答案 1 :(得分:0)
只需使用:
.statusCodeFunction(m -> HttpStatus.NO_CONTENT)
例如
@Bean
public IntegrationFlow syncFlow() {
return IntegrationFlows
.from(
Http.inboundGateway(HTTP_ENDPOINT_PATH).id("syncGateway")
.replyTimeout(serverProps.getReplyTimeout() * 1000)
.requestTimeout(serverProps.getRequestTimeout() * 1000)
.statusCodeFunction(m -> HttpStatus.NO_CONTENT)
.messageConverters(new SerializingHttpMessageConverter())
.convertExceptions(true)
.mappedResponseHeaders(IDENTIFICATION, TOKEN))
.channel(c -> c.direct("syncChannel")
.interceptor(new ChannelAuthenticationInterceptor(dataService)))
.handle(syncHandler)
.get();
}