一、添加依赖
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();
}
}
}
}