Example usage for org.springframework.web.servlet.mvc.method.annotation SseEmitter SseEmitter

List of usage examples for org.springframework.web.servlet.mvc.method.annotation SseEmitter SseEmitter

Introduction

In this page you can find the example usage for org.springframework.web.servlet.mvc.method.annotation SseEmitter SseEmitter.

Prototype

public SseEmitter() 

Source Link

Document

Create a new SseEmitter instance.

Usage

From source file:io.github.resilience4j.ratelimiter.monitoring.endpoint.RateLimiterEventsEmitter.java

public RateLimiterEventsEmitter(Flux<RateLimiterEventDTO> eventStream) {
    this.sseEmitter = new SseEmitter();
    this.sseEmitter.onCompletion(this::unsubscribe);
    this.sseEmitter.onTimeout(this::unsubscribe);
    this.disposable = eventStream.subscribe(this::notify, this.sseEmitter::completeWithError,
            this.sseEmitter::complete);
}

From source file:de.codecentric.boot.admin.journal.web.JournalController.java

@RequestMapping(path = "/api/journal", produces = "text/event-stream")
public SseEmitter getJournalEvents() {
    final SseEmitter emitter = new SseEmitter();
    emitter.onCompletion(new Runnable() {
        @Override//from   ww w. j av  a2s  . c o m
        public void run() {
            emitters.remove(emitter);
        }
    });
    emitters.add(emitter);
    return emitter;
}

From source file:com.ethlo.kfka.sse.EventController.java

@RequestMapping(value = "/v1/events", method = RequestMethod.GET)
public SseEmitter event(@RequestHeader(value = "Last-Event-ID", required = false) String lastEventIdHeader,
        @RequestParam(required = true, value = "topic") String topic,
        @RequestParam(required = false, value = "rewind") Integer rewind,
        @RequestParam(required = false, value = "lastEventId") Long lastEventIdOverride) throws IOException {
    final SseEmitter sseEmitter = new SseEmitter();
    final Emitter emitter = new Emitter(sseEmitter);

    logger.debug("Opening emitter {}", emitter.hashCode());
    this.emitters.add(emitter);

    final Long lastEventId = lastEventIdOverride != null ? lastEventIdOverride
            : (lastEventIdHeader != null ? Long.parseLong(lastEventIdHeader) : null);

    final KfkaPredicate p = new KfkaPredicate().topic(topic);
    if (lastEventId != null) {
        p.messageId(lastEventId + 1);//from ww  w  .  j ava2s  .  co m
        p.relativeOffset(Integer.MIN_VALUE + 10);
    } else {
        final int offset = rewind != null ? Math.abs(rewind) * -1 : -20;
        p.relativeOffset(offset);
    }

    final KfkaMessageListener l = kfkaManager.addListener((msg) -> {
        try {
            emitter.emit(msg);
        } catch (IOException exc) {
            throw Throwables.propagate(exc);
        }
    }, p);

    emitter.setListener(l);

    // Remove on completion
    sseEmitter.onCompletion(new Runnable() {
        @Override
        public void run() {
            logger.debug("Emitter {} closed", emitter.hashCode());
            emitters.remove(emitter);
            kfkaManager.removeListener(emitter.getListener());
        }
    });

    return sseEmitter;
}

From source file:io.spring.isomorphic.CommentController.java

@RequestMapping("/sse/updates")
SseEmitter subscribeUpdates() {//from   w  w w .j  a  v a2s  . c om
    SseEmitter sseEmitter = new SseEmitter();
    this.sseEmitters.add(sseEmitter);
    sseEmitter.onCompletion(() -> {
        this.sseEmitters.remove(sseEmitter);
    });
    return sseEmitter;
}