List of usage examples for org.springframework.messaging.simp SimpMessageHeaderAccessor setLeaveMutable
public void setLeaveMutable(boolean leaveMutable)
From source file:org.springframework.messaging.simp.annotation.support.SubscriptionMethodReturnValueHandler.java
private MessageHeaders createHeaders(@Nullable String sessionId, String subscriptionId, MethodParameter returnType) {//from ww w . ja va 2 s . c om SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE); if (getHeaderInitializer() != null) { getHeaderInitializer().initHeaders(accessor); } if (sessionId != null) { accessor.setSessionId(sessionId); } accessor.setSubscriptionId(subscriptionId); accessor.setHeader(SimpMessagingTemplate.CONVERSION_HINT_HEADER, returnType); accessor.setLeaveMutable(true); return accessor.getMessageHeaders(); }
From source file:org.springframework.messaging.simp.broker.OrderedMessageSenderTests.java
@Test public void test() throws InterruptedException { int start = 1; int end = 1000; AtomicInteger index = new AtomicInteger(start); AtomicReference<Object> result = new AtomicReference<>(); CountDownLatch latch = new CountDownLatch(1); this.channel.subscribe(message -> { int expected = index.getAndIncrement(); Integer actual = (Integer) message.getHeaders().getOrDefault("seq", -1); if (actual != expected) { result.set("Expected: " + expected + ", but was: " + actual); latch.countDown();// w w w . ja v a 2 s . co m return; } if (actual == 100 || actual == 200) { try { Thread.sleep(200); } catch (InterruptedException ex) { result.set(ex.toString()); latch.countDown(); } } if (actual == end) { result.set("Done"); latch.countDown(); } }); for (int i = start; i <= end; i++) { SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE); accessor.setHeader("seq", i); accessor.setLeaveMutable(true); this.sender.send(MessageBuilder.createMessage("payload", accessor.getMessageHeaders())); } latch.await(10, TimeUnit.SECONDS); assertEquals("Done", result.get()); }
From source file:org.springframework.messaging.simp.user.UserDestinationMessageHandler.java
@Override public void handleMessage(Message<?> message) throws MessagingException { Message<?> messageToUse = message; if (this.broadcastHandler != null) { messageToUse = this.broadcastHandler.preHandle(message); if (messageToUse == null) { return; }/*from w w w.j a v a 2 s. c o m*/ } UserDestinationResult result = this.destinationResolver.resolveDestination(messageToUse); if (result == null) { return; } if (result.getTargetDestinations().isEmpty()) { if (logger.isTraceEnabled()) { logger.trace("No active sessions for user destination: " + result.getSourceDestination()); } if (this.broadcastHandler != null) { this.broadcastHandler.handleUnresolved(messageToUse); } return; } SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.wrap(messageToUse); initHeaders(accessor); accessor.setNativeHeader(SimpMessageHeaderAccessor.ORIGINAL_DESTINATION, result.getSubscribeDestination()); accessor.setLeaveMutable(true); messageToUse = MessageBuilder.createMessage(messageToUse.getPayload(), accessor.getMessageHeaders()); if (logger.isTraceEnabled()) { logger.trace("Translated " + result.getSourceDestination() + " -> " + result.getTargetDestinations()); } for (String target : result.getTargetDestinations()) { this.messagingTemplate.send(target, messageToUse); } }