package net.nicoll.scratch.spring.jms;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.support.JmsHeaders;
import org.springframework.jms.support.JmsMessageHeaderAccessor;
import org.springframework.messaging.Message;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
/**
*
* @author Stephane Nicoll
*/
@Component
public class DemoService {
private final Logger logger = LoggerFactory.getLogger(DemoService.class);
private final List<String> logs = new ArrayList<String>();
@JmsListener(destination = "testQueue")
@SendTo("anotherQueue")
public Message<String> echo(String input, JmsMessageHeaderAccessor headerAccessor) {
logger.info("Sending back: " + input + " (messageId=" + headerAccessor.getMessageId() + ")");
return MessageBuilder.withPayload(input)
.setHeader("myCustomHeader", "foo")
.setHeader(JmsHeaders.TYPE, "myJmsType")
.build();
}
@JmsListener(destination = "anotherQueue")
public void log(String input, @Header(JmsHeaders.CORRELATION_ID) String correlationId) {
logger.info("Received: " + input + " (correlationId=" + correlationId + ")");
logs.add(input);
}
void clearLogs() {
logs.clear();
}
List<String> getLogs() {
return logs;
}
}