spring boot ActiveMQ 支持topic和队列

spring boot ActiveMQ 支持topic和队列

1、mq 配置
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.core.JmsMessagingTemplate;

import javax.jms.ConnectionFactory;

@Configuration
@EnableJms
public class MqConfig {

    @SuppressWarnings("SpringJavaAutowiringInspection") //加这个注解让IDE 不报: Could not autowire
    @Autowired
    private ConnectionFactory connectionFactory;



    @Bean
    public JmsListenerContainerFactory<?> jmsListenerContainerTopic( ) {
        DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
        bean.setPubSubDomain(true);
        bean.setConnectionFactory(connectionFactory);
        return bean;
    }
    @Bean
    public JmsListenerContainerFactory<?> jmsListenerContainerQueue( ) {
        DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory();
        bean.setConnectionFactory(connectionFactory);
        return bean;
    }
    @Bean
    public JmsMessagingTemplate jmsMessagingTemplate( ){
        return new JmsMessagingTemplate(connectionFactory);
    }


1、mq 消费者

    @JmsListener(destination = "test.queue", containerFactory = "jmsListenerContainerQueue")
    public void receiveQueueTest(String text) {
        log.info("receiveQueueTest->"+text);
        System.out.println("receiveQueueTestConsumer收到的报文为:"+text);
    }
    @JmsListener(destination = "test.topic",containerFactory = "jmsListenerContainerTopic")
    public void receiveTopicTest(String text) {
        log.info("receiveTopicTest->"+text);
        System.out.println("receiveQueueTestConsumer收到的报文为:"+text);
    }



2、生成者

@Service("producer")
public class MqProducer {
    @Autowired // 也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装
    private JmsMessagingTemplate jmsMessagingTemplate;

    @Autowired
    private JmsTemplate jmsTemplate;

    // 发送消息,destination是发送到的队列,message是待发送的消息  
    public void sendMessage(final String destination, final String message) {
        jmsMessagingTemplate.convertAndSend(destination, message);


    }

    public void sendMessageQueue(final String queue, final String message) {
        Destination destination = new ActiveMQQueue(queue);
        jmsMessagingTemplate.convertAndSend(destination, message);
//        jmsTemplate.send(destination, new MessageCreator() {
//
//            public Message createMessage(Session session) throws JMSException {
////                ObjectMessage objMessage = session.createObjectMessage(message);
//                TextMessage textMessage = session.createTextMessage(message);
//                return textMessage;
//            }
//
//        });


    }


    public void sendMessageTopic(final String topic, final String message) {
        Destination destination = new ActiveMQTopic(topic);
        jmsMessagingTemplate.convertAndSend(destination,message);
//        jmsTemplate.send(destination, new MessageCreator() {
//            public Message createMessage(Session session) throws JMSException {
////                ObjectMessage objMessage = session.createObjectMessage(message);
////                return objMessage;
//                TextMessage textMessage = session.createTextMessage(message);
//                return textMessage;
//            }
//        });


    }
}  

猜你喜欢

转载自gangling.iteye.com/blog/2400349