Spring Boot JMS with ActiveMQ
Sender JMS
import javax.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.connection.CachingConnectionFactory;
import org.springframework.jms.core.JmsTemplate;
@Configuration
@EnableJms
public class JMSConfigurationSender {
static String mailboxDestination = "queue.mail";
@Bean
ConnectionFactory factory() {
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://172.16.0.231:61616");
activeMQConnectionFactory.setUserName("admin");
activeMQConnectionFactory.setPassword("admin");
return new CachingConnectionFactory(activeMQConnectionFactory);
}
@Bean
public DefaultJmsListenerContainerFactory connectionFactory(
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, factory());
return factory;
}
@Bean
JmsTemplate jmsTemplate(ConnectionFactory connectionFactory) {
return new JmsTemplate(connectionFactory);
}
}
@Component
public class SenderEmail {
@Autowired
private JmsTemplate jmsTemplate;
public void send(Email email){
jmsTemplate.convertAndSend("queue.mail", email.getMessage());
}
}
Receiver JMS
@Configuration
@EnableJms
public class JMSConfiguration {
static String mailboxDestination = "queue.mail";
@Bean
public DefaultJmsListenerContainerFactory connectionFactory(
DefaultJmsListenerContainerFactoryConfigurer configurer) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
configurer.configure(factory, factory());
return factory;
}
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class ReceiverEmail {
@JmsListener(destination = "queue.mail", containerFactory="connectionFactory")
public void receiveMessage(String message) {
System.out.println("Received <" + message + ">");
}
}