使用WebFlux构建响应式长轮询API可以提高API的性能和灵活性。以下是使用Spring WebFlux构建响应式长轮询API的步骤:
org.springframework.boot
spring-boot-starter-webflux
public class Message {
private String text;
// getters and setters omitted
}
@RestController
public class MessageController {
private final MessageService messageService;
@Autowired
public MessageController(final MessageService messageService) {
this.messageService = messageService;
}
@GetMapping(value = "/messages", produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
public Flux getMessages() {
return messageService.getMessages();
}
}
@Service
public class MessageService {
private final Flux messageFlux;
@Autowired
public MessageService(final MessageTrigger messageTrigger) {
this.messageFlux = Flux.create(messageTrigger).share();
}
public Flux getMessages() {
return messageFlux;
}
}
@Component
public class MessageTrigger implements Consumer> {
@Override
public void accept(final FluxSink sink) {
TimerTask task = new TimerTask() {
int i = 0;
@Override
public void run() {
sink