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());

          // se for necessário uma classe converter
    // factory.setMessageConverter(myMessageConverter());

    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";

    // ... outras configurações, por exemplo para Sender

    @Bean
    public DefaultJmsListenerContainerFactory connectionFactory(
            DefaultJmsListenerContainerFactoryConfigurer configurer) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        configurer.configure(factory, factory());

        // se for necessário uma classe converter
        // factory.setMessageConverter(myMessageConverter());

        return factory;
    }
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

@Component
public class ReceiverEmail {

    ///***
    /// queue.mail = o nome da fila que deve ser consumida
    /// containerFactory o nome do Bean na classe de Configuração
    ///***
    @JmsListener(destination = "queue.mail", containerFactory="connectionFactory")
    public void receiveMessage(String message) {
        System.out.println("Received <" + message + ">");
    }

}

results matching ""

    No results matching ""