exec(run, 2); circuitBreaker.reset(); sseEmitter.complete(); assert handler.isCompleted;
@RequestMapping(value = BASE_PATH + "/getAccountBalances", method = RequestMethod.GET) public SseEmitter getAccountBalances(@QueryParam("accountId") Integer[] accountIds) { final SseEmitter emitter = new SseEmitter(); new Thread(new Runnable() { @Override public void run() { try { for (int xx = 0; xx < ids.length; xx++) { Thread.sleep(2000L + rand.nextInt(2000)); BalanceDetails balance = new BalanceDetails(); ... emitter.send(emitter.event().name("accountBalance").id(String.valueOf(accountIds[xx])) .data(balance, MediaType.APPLICATION_JSON)); } emitter.send(SseEmitter.event().name("complete").data("complete")); emitter.complete(); } catch (Exception ee) { ee.printStackTrace(); emitter.completeWithError(ee); } } }).start(); return emitter; }
@ResponseBody @RequestMapping(path = "/chat", method = RequestMethod.POST) public Message sendMessage(@Valid Message message) { log.info("Got message" + message); emitters.forEach((SseEmitter emitter) -> { try { emitter.send(message, MediaType.APPLICATION_JSON); } catch (IOException e) { emitter.complete(); emitters.remove(emitter); e.printStackTrace(); } }); return message; } }
@Scheduled(fixedRate = 1000) void someAsyncMethod() { try { emitter.send(new Message(new Date().toString()), MediaType.APPLICATION_JSON); } catch (IOException e) { emitter.complete(); } } }
@RequestMapping(value = "/getNotificationCount/{userId}",method = RequestMethod.GET) public SseEmitter getNotificationCount(@PathVariable("userId") String userId, HttpServletResponse response){ SseEmitter emitter = null; try { emitter = new SseEmitter(); while(true) { try{ int count= myService.getNotificationCount(Integer.parseInt(userId)); emitter.send(count); Thread.sleep(30 * // minutes to sleep 60 * // seconds to a minute 1000); // milliseconds to a second }catch(ClientAbortException cae){ LOGGER.info("ClientAbortException Breaking the notification stream"); break; } } //Closes the stream emitter.complete(); } catch (Exception e) { //Closes the stream emitter.complete(); } return emitter; }
sseEmitter.complete(); return sseEmitter;
private static boolean sendEventToClient(ClientEvent clientEvent) { Client client = clientEvent.getClient(); try { client.sseEmitter().send(clientEvent.createSseEventBuilder()); if (client.isCompleteAfterMessage()) { client.sseEmitter().complete(); } return true; } catch (Exception e) { return false; } }