@Override public void afterConnected(final StompSession session, StompHeaders connectedHeaders) { this.connectLatch.countDown(); session.setAutoReceipt(true); session .subscribe( "/topic/greeting", new StompFrameHandler() { @Override public Type getPayloadType(StompHeaders headers) { return String.class; } @Override public void handleFrame(StompHeaders headers, Object payload) { if (messageCount.incrementAndGet() == expectedMessageCount) { messageLatch.countDown(); disconnectLatch.countDown(); session.disconnect(); } } }) .addReceiptTask( new Runnable() { @Override public void run() { subscribeLatch.countDown(); } }); }