@Override public void afterConnected(StompSession session, StompHeaders connectedHeaders) { session.subscribe(this.topic, new StompFrameHandler() { @Override public Type getPayloadType(StompHeaders headers) { return String.class; } @Override public void handleFrame(StompHeaders headers, @Nullable Object payload) { received.add((String) payload); } }); try { // Delay send since server processes concurrently // Ideally order should be preserved or receipts supported (simple broker) Thread.sleep(500); } catch (InterruptedException ex) { logger.error(ex); } session.send(this.topic, this.payload); }
@Override public void afterConnected(StompSession session, StompHeaders connectedHeaders) { for (String topic : this.topics) { session.setAutoReceipt(true); Subscription subscription = session.subscribe(topic, new StompFrameHandler() { @Override public Type getPayloadType(StompHeaders headers) { return String.class; } @Override public void handleFrame(StompHeaders headers, @Nullable Object payload) { received.add((String) payload); } }); subscription.addReceiptTask(subscriptionLatch::countDown); } }
@Override public void afterConnected(StompSession session, StompHeaders connectedHeaders) { session.subscribe("/topic/greetings", this); session.send("/app/hello", "{\"name\":\"Client\"}".getBytes()); log.info("New session: {}", session.getSessionId()); }
@Override public void afterConnected(StompSession session, StompHeaders connectedHeaders) { for (int i = 0; i < this.topics.size(); i++) { session.send(this.topics.get(i), this.payloads.get(i)); } } }
private void subscribeDestination(final String destination) { if (this.stompSession != null) { final StompSession.Subscription subscription = this.stompSession.subscribe(destination, new StompFrameHandler() {
@Override public void onSuccess(StompSession session) { if (session != null) { session.disconnect(); } AbstractStompSessionManager.this.connected = false; }
AbstractStompSessionManager.this.connecting = false; if (stompSession != null) { stompSession.setAutoReceipt(isAutoReceiptEnabled());
@Override protected boolean isConnected() { return (this.serverSession != null && this.serverSession.isConnected()); }
final StompSession.Receiptable receiptable = session.send(stompHeaders, message.getPayload()); if (receiptable.getReceiptId() != null) { final String destination = stompHeaders.getDestination();
public void subscribe(String destination) throws Exception { connectIfNecessary(); StompSession.Subscription subscription = serverSession.subscribe(destination, this); subscriptions.put(destination, subscription); }
@Test public void publishSubscribe() throws Exception { String destination = "/topic/foo"; ConsumingHandler consumingHandler1 = new ConsumingHandler(destination); ListenableFuture<StompSession> consumerFuture1 = this.client.connect(consumingHandler1); ConsumingHandler consumingHandler2 = new ConsumingHandler(destination); ListenableFuture<StompSession> consumerFuture2 = this.client.connect(consumingHandler2); assertTrue(consumingHandler1.awaitForSubscriptions(5000)); assertTrue(consumingHandler2.awaitForSubscriptions(5000)); ProducingHandler producingHandler = new ProducingHandler(); producingHandler.addToSend(destination, "foo1"); producingHandler.addToSend(destination, "foo2"); ListenableFuture<StompSession> producerFuture = this.client.connect(producingHandler); assertTrue(consumingHandler1.awaitForMessageCount(2, 5000)); assertThat(consumingHandler1.getReceived(), containsInAnyOrder("foo1", "foo2")); assertTrue(consumingHandler2.awaitForMessageCount(2, 5000)); assertThat(consumingHandler2.getReceived(), containsInAnyOrder("foo1", "foo2")); consumerFuture1.get().disconnect(); consumerFuture2.get().disconnect(); producerFuture.get().disconnect(); }
@Override protected void closeConnection() throws Exception { if (isConnected()) { this.serverSession.disconnect(); } }