package org.springframework.issues; import org.springframework.jms.annotation.JmsListener; import org.springframework.messaging.Message; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.messaging.support.MessageBuilder; import org.springframework.stereotype.Component; import java.util.UUID; import java.util.concurrent.TimeUnit; @Component public class TodoService { @JmsListener(destination = "TodoQueue") @SendTo("ReplyTodoQueue") public Todo receive(Message<Todo> message) throws InterruptedException { Todo todo = message.getPayload(); Object xTrack = message.getHeaders().get("X-Track"); System.out.println("Received Message : " + message); System.out.println("Received X-Track : " + xTrack); System.out.println(todo.getTitle()); System.out.println(todo.getDescription()); TimeUnit.SECONDS.sleep(1); todo.setTodoId(UUID.randomUUID().toString()); return todo; } @JmsListener(destination = "TodoQueue2") @SendTo("ReplyTodoQueue2") public Message<Todo> receive2(Message<Todo> message) throws InterruptedException { Todo todo = message.getPayload(); Object xTrack = message.getHeaders().get("X-Track"); System.out.println("Received Message : " + message); System.out.println("Received X-Track : " + xTrack); System.out.println(todo.getTitle()); System.out.println(todo.getDescription()); TimeUnit.SECONDS.sleep(1); todo.setTodoId(UUID.randomUUID().toString()); return MessageBuilder .withPayload(todo) .setHeader("X-Track", xTrack) .build(); } }