JMS-ActiveMQ-Spring


一、添加依赖


    
    
    
        org.apache.activemq
        activemq-all
        5.16.2
    
    
    
        org.apache.xbean
        xbean-spring
        4.20
    
    
    
    
        com.fasterxml.jackson.core
        jackson-databind
        2.12.4
    

    
    
    
        org.springframework
        spring-jms
        5.3.9
    
    
    
    
        org.apache.activemq
        activemq-pool
        5.16.1
    
    
    
        org.springframework
        spring-core
        5.3.9
    
    
    
        org.springframework
        spring-context
        5.3.9
    
    
    
        org.springframework
        spring-aop
        5.3.9
    
    
    
        org.springframework
        spring-orm
        5.3.9
    
    
    
        org.aspectj
        aspectjrt
        1.9.7
        runtime
    
    
    
        org.aspectj
        aspectjweaver
        1.9.7
        runtime
    
    
    
        cglib
        cglib
        3.2.12
    

二、spring配置文件

<?xml version="1.0" encoding="UTF-8"?>

	
	

	
	
		
			
			
				
			
		
		
	

	
	
		
	

	
	
		
		
		
			
		
 	

三、队列

3.1 生产者

@Service
public class SpringActiveMQProducer {

    @Autowired
    private JmsTemplate jmsTemplate;

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        SpringActiveMQProducer producer = (SpringActiveMQProducer) ctx.getBean("springActiveMQProducer");
        producer.jmsTemplate.send(new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                TextMessage textMessage = session.createTextMessage(">>>Spring-ActiveMQ-Send>>>>");
                return textMessage;
            }
        });
        System.out.println("发送成功....");
    }
}

3.2 消费者

@Service
public class SpringActiveMQConsumer {

    @Autowired
    private JmsTemplate jmsTemplate;

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        SpringActiveMQConsumer consumer = (SpringActiveMQConsumer) ctx.getBean("springActiveMQConsumer");

        String retValue = (String) consumer.jmsTemplate.receiveAndConvert();

        System.out.println("Spring-消费者接收消息:"+retValue);
    }
}

四、主题

4.1 Spring配置文件,新增topic主题



    




    
    
    
        
    

4.2 生产者

@Service
public class SpringActiveMQProducer {

    @Autowired
    private JmsTemplate jmsTemplate;

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        SpringActiveMQProducer producer = (SpringActiveMQProducer) ctx.getBean("springActiveMQProducer");
        producer.jmsTemplate.send(new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                TextMessage textMessage = session.createTextMessage(">>>Spring-ActiveMQ-Send>>>>");
                return textMessage;
            }
        });
        System.out.println("发送成功....");
    }
}

4.3 消费者

@Service
public class SpringActiveMQConsumer {

    @Autowired
    private JmsTemplate jmsTemplate;

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        SpringActiveMQConsumer consumer = (SpringActiveMQConsumer) ctx.getBean("springActiveMQConsumer");

        String retValue = (String) consumer.jmsTemplate.receiveAndConvert();

        System.out.println("Spring-消费者接收消息:"+retValue);
    }
}

五、监听器配置(不需要启动消费者)

5.1 Spring配置文件


	
		
		
		
		
	
    
    

5.2 编写一个类实现消息监听

@Component
public class MyMessageListener implements MessageListener {
    @Override
    public void onMessage(Message message) {
        if (message != null && message instanceof TextMessage){
            TextMessage textMessage = (TextMessage) message;

            try {
                System.out.println(textMessage.getText());
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }
}