diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java index fc0d3fe4ac9..44cb5f8e7ae 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java @@ -67,7 +67,6 @@ public class DefaultStompSession implements ConnectionHandlingStompSession { private static final Message HEARTBEAT; - static { StompHeaderAccessor accessor = StompHeaderAccessor.createForHeartbeat(); HEARTBEAT = MessageBuilder.createMessage(StompDecoder.HEARTBEAT_PAYLOAD, accessor.getMessageHeaders()); @@ -93,6 +92,8 @@ public class DefaultStompSession implements ConnectionHandlingStompSession { private volatile TcpConnection connection; + private volatile String version; + private final AtomicInteger subscriptionIndex = new AtomicInteger(); private final Map subscriptions = new ConcurrentHashMap(4); @@ -313,7 +314,12 @@ public class DefaultStompSession implements ConnectionHandlingStompSession { @Override public Receiptable acknowledge(String messageId, boolean consumed) { StompHeaders stompHeaders = new StompHeaders(); - stompHeaders.setId(messageId); + if ("1.1".equals(this.version)) { + stompHeaders.setMessageId(messageId); + } + else { + stompHeaders.setId(messageId); + } String receiptId = checkOrAddReceipt(stompHeaders); Receiptable receiptable = new ReceiptHandler(receiptId); @@ -407,6 +413,7 @@ public class DefaultStompSession implements ConnectionHandlingStompSession { } else if (StompCommand.CONNECTED.equals(command)) { initHeartbeatTasks(stompHeaders); + this.version = stompHeaders.getFirst("version"); this.sessionFuture.set(this); this.sessionHandler.afterConnected(this, stompHeaders); }