Example usage for org.springframework.messaging.simp.stomp StompHeaders getSubscription

List of usage examples for org.springframework.messaging.simp.stomp StompHeaders getSubscription

Introduction

In this page you can find the example usage for org.springframework.messaging.simp.stomp StompHeaders getSubscription.

Prototype

@Nullable
public String getSubscription() 

Source Link

Document

Get the subscription header.

Usage

From source file:org.springframework.messaging.simp.stomp.DefaultStompSession.java

@Override
public void handleMessage(Message<byte[]> message) {
    StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
    Assert.state(accessor != null, "No StompHeaderAccessor");

    accessor.setSessionId(this.sessionId);
    StompCommand command = accessor.getCommand();
    Map<String, List<String>> nativeHeaders = accessor.getNativeHeaders();
    StompHeaders stompHeaders = StompHeaders.readOnlyStompHeaders(nativeHeaders);
    boolean isHeartbeat = accessor.isHeartbeat();
    if (logger.isTraceEnabled()) {
        logger.trace("Received " + accessor.getDetailedLogMessage(message.getPayload()));
    }/*from   ww w  .j  av  a2  s.co m*/

    try {
        if (StompCommand.MESSAGE.equals(command)) {
            DefaultSubscription subscription = this.subscriptions.get(stompHeaders.getSubscription());
            if (subscription != null) {
                invokeHandler(subscription.getHandler(), message, stompHeaders);
            } else if (logger.isDebugEnabled()) {
                logger.debug("No handler for: " + accessor.getDetailedLogMessage(message.getPayload())
                        + ". Perhaps just unsubscribed?");
            }
        } else {
            if (StompCommand.RECEIPT.equals(command)) {
                String receiptId = stompHeaders.getReceiptId();
                ReceiptHandler handler = this.receiptHandlers.get(receiptId);
                if (handler != null) {
                    handler.handleReceiptReceived();
                } else if (logger.isDebugEnabled()) {
                    logger.debug(
                            "No matching receipt: " + accessor.getDetailedLogMessage(message.getPayload()));
                }
            } else if (StompCommand.CONNECTED.equals(command)) {
                initHeartbeatTasks(stompHeaders);
                this.version = stompHeaders.getFirst("version");
                this.sessionFuture.set(this);
                this.sessionHandler.afterConnected(this, stompHeaders);
            } else if (StompCommand.ERROR.equals(command)) {
                invokeHandler(this.sessionHandler, message, stompHeaders);
            } else if (!isHeartbeat && logger.isTraceEnabled()) {
                logger.trace("Message not handled.");
            }
        }
    } catch (Throwable ex) {
        this.sessionHandler.handleException(this, command, stompHeaders, message.getPayload(), ex);
    }
}