This commit is contained in:
priyeshmashelkar 2018-07-06 12:47:41 +01:00
commit 8e3fdf0657
3 changed files with 0 additions and 90 deletions

View File

@ -1,22 +0,0 @@
package com.baeldung.reactive.client;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec;
import com.baeldung.reactive.model.Stock;
import reactor.core.publisher.Flux;
public class StockClient {
public Flux<Stock> getStockUpdates(String stockCode) {
WebClient client = WebClient.create("localhost:8080");
RequestHeadersSpec<?> request = client.get()
.uri("/rtes/stocks/" + stockCode)
.accept(MediaType.TEXT_EVENT_STREAM);
return request.retrieve()
.bodyToFlux(Stock.class)
.log();
}
}

View File

@ -1,36 +0,0 @@
package com.baeldung.reactive.controller;
import java.math.BigDecimal;
import java.time.Duration;
import java.util.Random;
import java.util.stream.Stream;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baeldung.reactive.model.Stock;
import reactor.core.publisher.Flux;
import reactor.util.function.Tuple2;
@RestController
@RequestMapping("/rtes")
public class StockReactiveController {
@GetMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE, value = "/stocks/{code}")
public Flux<Stock> getStocks(@PathVariable String code) {
BigDecimal startingPrice = new BigDecimal("100");
Flux<Stock> stockFlux = Flux.fromStream(Stream.generate(() -> new Stock(code, getLatestPrice(startingPrice))));
Flux<Long> emmitFlux = Flux.interval(Duration.ofSeconds(1));
return Flux.zip(stockFlux, emmitFlux)
.map(Tuple2::getT1);
}
private BigDecimal getLatestPrice(BigDecimal startingPrice) {
BigDecimal priceChange = BigDecimal.valueOf(new Random().nextDouble());
return new Random().nextBoolean() ? startingPrice.add(priceChange) : startingPrice.subtract(priceChange);
}
}

View File

@ -1,32 +0,0 @@
package com.baeldung.reactive.model;
import java.math.BigDecimal;
public class Stock {
private String code;
private BigDecimal price;
public Stock(String code, BigDecimal price) {
this.code = code;
this.price = price;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
}