private static boolean pollQueue(final MessageQueue queue, final OutputStream stream, final HttpServletResponse httpServletResponse) throws IOException { if (queue == null) return false; queue.heartBeat(); httpServletResponse.setHeader("Cache-Control", "no-cache"); httpServletResponse.setHeader("Pragma", "no-cache"); httpServletResponse.setHeader("Expires", "-1"); httpServletResponse.setContentType("application/json"); return queue.poll(new OutputStreamWriteAdapter(stream)); }
@Override public void activate(final MessageQueue queue) { try { queue.poll(new OutputStreamWriteAdapter(asyncContext.getResponse().getOutputStream())); queue.setActivationCallback(null); queue.heartBeat(); } catch (IOException e) { log.debug("Closing queue with id: " + queue.getSession().getSessionId() + " due to IOException", e); } catch (final Throwable t) { try { writeExceptionToOutputStream((HttpServletResponse) asyncContext.getResponse(), t); } catch (Throwable t2) { log.debug("Failed to write exception to dead client", t2); } } finally { asyncContext.complete(); } } });
try { prepareSSEContinue(httpServletResponse); queue.poll(TimeUnit.MILLISECONDS, getSSETimeout(), new OutputStreamWriteAdapter(outputStream)); outputStream.write(SSE_TERMINATION_BYTES); outputStream.flush(); queue.poll(TimeUnit.MILLISECONDS, getLongPollTimeout(), new OutputStreamWriteAdapter(outputStream)); queue.poll(new OutputStreamWriteAdapter(outputStream));
queue.poll(new OutputStreamWriteAdapter(response.getOutputStream()));
if (queue.messagesWaiting()) { try { queue.poll(new OutputStreamWriteAdapter(asyncContext.getResponse().getOutputStream())); asyncContext.complete();
class Consumer { private final ExecutorService tp; private final MessageQueue messageQueue; Consumer(ExecutorService tp,MessageQueue queue){ this.tp = tp; this.messageQueue = queue; } @Override public void run(){ Message msg = messageQueue.poll(); if (msg != null) { try{ ... // do something with the message finally{ this.tp.execute(this); } } } } }
private static boolean pollQueue(final MessageQueue queue, final OutputStream stream, final HttpServletResponse httpServletResponse) throws IOException { if (queue == null) return false; queue.heartBeat(); httpServletResponse.setHeader("Cache-Control", "no-cache"); httpServletResponse.setHeader("Pragma", "no-cache"); httpServletResponse.setHeader("Expires", "-1"); httpServletResponse.setContentType("application/json"); return queue.poll(new OutputStreamWriteAdapter(stream)); }
@Override public void activate(final MessageQueue queue) { try { queue.poll(new OutputStreamWriteAdapter(asyncContext.getResponse().getOutputStream())); queue.setActivationCallback(null); queue.heartBeat(); } catch (IOException e) { log.debug("Closing queue with id: " + queue.getSession().getSessionId() + " due to IOException", e); } catch (final Throwable t) { try { writeExceptionToOutputStream((HttpServletResponse) asyncContext.getResponse(), t); } catch (Throwable t2) { log.debug("Failed to write exception to dead client", t2); } } finally { asyncContext.complete(); } } });
try { prepareSSEContinue(httpServletResponse); queue.poll(TimeUnit.MILLISECONDS, getSSETimeout(), new OutputStreamWriteAdapter(outputStream)); outputStream.write(SSE_TERMINATION_BYTES); outputStream.flush(); queue.poll(TimeUnit.MILLISECONDS, getLongPollTimeout(), new OutputStreamWriteAdapter(outputStream)); queue.poll(new OutputStreamWriteAdapter(outputStream));
queue.poll(new OutputStreamWriteAdapter(response.getOutputStream()));
if (queue.messagesWaiting()) { try { queue.poll(new OutputStreamWriteAdapter(asyncContext.getResponse().getOutputStream())); asyncContext.complete();