Skip to content

Instantly share code, notes, and snippets.

@alexandre-jacquot-ptl
Created May 23, 2021 16:38
Show Gist options
  • Save alexandre-jacquot-ptl/4dd3fc6823bc6128fdfff709d1a5a416 to your computer and use it in GitHub Desktop.
Save alexandre-jacquot-ptl/4dd3fc6823bc6128fdfff709d1a5a416 to your computer and use it in GitHub Desktop.
r2dbc ItemController listen
@RestController
@RequestMapping(value = "/items")
public class ItemController {
private final ItemService itemService;
...
@GetMapping("/events")
public Flux<ServerSentEvent<Event>> listenToEvents() {
final Flux<Event> itemSavedFlux =
this.itemService.listenToSavedItems()
.map(itemMapper::toResource)
.map(ItemSaved::new);
final Flux<Event> itemDeletedFlux =
this.itemService.listenToDeletedItems()
.map(ItemDeleted::new);
return Flux.merge(itemSavedFlux, itemDeletedFlux)
.map(event -> ServerSentEvent.<Event>builder()
.retry(Duration.ofSeconds(4L))
.event(event.getClass().getSimpleName())
.data(event).build());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment