临清聊城网站优化,优化网站关键词排名,jfinal怎么做网站,网站开发 验收模板mfc 弹簧Spring-Reactive旨在为基于Spring的项目带来响应式编程支持 #xff0c;并且有望在Spring 5的时间表中提供。 我的意图是使用此模型为REST端点行使一些非常基本的签名。 在继续之前#xff0c;请允许我确认整个样本完全基于塞巴斯蒂安德勒兹#xff08;SbastienDel… mfc 弹簧 Spring-Reactive旨在为基于Spring的项目带来响应式编程支持 并且有望在Spring 5的时间表中提供。 我的意图是使用此模型为REST端点行使一些非常基本的签名。 在继续之前请允许我确认整个样本完全基于塞巴斯蒂安·德勒兹SébastienDeleuze 在这里汇总的样本– https://github.com/sdeleuze/spring-reactive-playground 我想考虑三个示例首先是现有Java 8 CompletableFuture作为类型返回的情况其次是RxJava的Observable作为类型返回的情况其次是Spring Reactor Core的 Flux类型的情况。 预期协议 这三个服务中的每一个处理的请求和响应消息的结构都遵循以下几行它们都将接收如下所示的请求 {id:1,delay_by: 2000,payload: Hello,throw_exception: false
} delay_by将使响应延迟throw_exception将使对错误的响应消失。 合理的响应如下 {id: 1,received: Hello,payload: Response Message
} 我将忽略此职位的例外情况。 CompletableFuture作为返回类型 考虑一个返回java 8 CompletableFuture作为返回类型的服务 public CompletableFutureMessageAcknowledgement handleMessage(Message message) {return CompletableFuture.supplyAsync(() - {Util.delay(message.getDelayBy());return new MessageAcknowledgement(message.getId(), message.getPayload(), data from CompletableFutureService);}, futureExecutor);
} 现在调用此服务的Controller的方法签名如下所示 RestController
public class CompletableFutureController {private final CompletableFutureService aService;Autowiredpublic CompletableFutureController(CompletableFutureService aService) {this.aService aService;}RequestMapping(path /handleMessageFuture, method RequestMethod.POST)public CompletableFutureMessageAcknowledgement handleMessage(RequestBody Message message) {return this.aService.handleMessage(message);}} 当CompletableFuture完成时框架将确保将响应适当地编组。 Rx Java可观察为返回类型 考虑将Rx Java Observable作为返回类型返回的服务 public ObservableMessageAcknowledgement handleMessage(Message message) {logger.info(About to Acknowledge);return Observable.just(message).delay(message.getDelayBy(), TimeUnit.MILLISECONDS).flatMap(msg - {if (msg.isThrowException()) {return Observable.error(new IllegalStateException(Throwing a deliberate exception!));}return Observable.just(new MessageAcknowledgement(message.getId(), message.getPayload(), From RxJavaService));});
} 调用此类服务的控制器现在可以直接将Observable作为类型返回并且框架将确保一旦发出所有项目响应就会正确地编组。 RestController
public class RxJavaController {private final RxJavaService aService;Autowiredpublic RxJavaController(RxJavaService aService) {this.aService aService;}RequestMapping(path /handleMessageRxJava, method RequestMethod.POST)public ObservableMessageAcknowledgement handleMessage(RequestBody Message message) {System.out.println(Got Message..);return this.aService.handleMessage(message);}} 请注意由于Observable代表0到许多项目的流因此这次响应是一个json数组。 Spring Reactor Core Flux作为返回类型 最后如果响应类型是Flux类型则框架确保响应被干净处理。 该服务遵循以下原则 public Fluxmessageacknowledgement handleMessage(Message message) {return Flux.just(message).delay(Duration.ofMillis(message.getDelayBy())).map(msg - Tuple.of(msg, msg.isThrowException())).flatMap(tup - {if (tup.getT2()) {return Flux.error(new IllegalStateException(Throwing a deliberate Exception!));}Message msg tup.getT1();return Flux.just(new MessageAcknowledgement(msg.getId(), msg.getPayload(), Response from ReactorService));});
} 以及使用此类服务的控制器 RestController
public class ReactorController {private final ReactorService aService;Autowiredpublic ReactorController(ReactorService aService) {this.aService aService;}RequestMapping(path /handleMessageReactor, method RequestMethod.POST)public FluxMessageAcknowledgement handleMessage(RequestBody Message message) {return this.aService.handleMessage(message);}}结论 这只是Spring Reactive项目支持的返回类型的示例可能的返回类型远不止于此–这里是一个更全面的示例。 我期待React式编程模型在核心Spring框架中可用。 我的github存储库中提供了此博客文章中提供的示例 翻译自: https://www.javacodegeeks.com/2016/06/spring-reactive-samples.htmlmfc 弹簧