一、加入依赖
<dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> <!-- ActiveMQ依赖 --> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> </dependency> <!-- 加入spring-jms依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> </dependencies>
二、创建applicationContext-activemq-queue.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 --> <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://xxx.xxx.xxx.xxx:61616"/> </bean> <!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory --> <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"> <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory --> <property name="targetConnectionFactory" ref="targetConnectionFactory"/> </bean> <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 --> <property name="connectionFactory" ref="connectionFactory"/> </bean> <!--队列模式,点对点的 --> <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg value="spring_queue"/> </bean>
<!-- messageListener实现类 --> <bean id="queueMessageListener" class="it.hehe.activemq.spring.queue.QueueMessageListener"/> <!-- 配置一个jms监听容器 --> <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory"/> <property name="destination" ref="queueDestination"/> <property name="messageListener" ref="queueMessageListener"/> </bean></ beans >
三、创建
QueueMessageListener.java 监听器
public class QueueMessageListener extends AbstractAdaptableMessageListener { @Override public void onMessage(Message message, Session session) throws JMSException { // 判断消息类型是TextMessage if (message instanceof TextMessage) { // 如果是,则进行强转 TextMessage textMessage = (TextMessage) message; try { // 消费消息,打印消息内容 String text = textMessage.getText(); System.out.println("QueueMessageListener 消息监听器接收到消息;消息内容为:" + text); } catch (Exception e) { e.printStackTrace(); } } } }四、创建生产者测试类
Producer.java
package cn.itcast.activemq.spring.queue; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.command.ActiveMQTextMessage; import org.apache.activemq.command.ActiveMQTopic; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; public class Producer { public static void main(String[] args) { // 创建spring容器 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-activemq-queue.xml"); // 从spring容器中获取JMSTemplate,这个对象是用于发送消息的 JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class); //创建消息模式 Destination destination = (Destination)context.getBean("queueDestination"); // 使用JMSTemplate发送消息 jmsTemplate.send(destination, new MessageCreator() { @Override public Message createMessage(Session session) throws JMSException { TextMessage textMessage = new ActiveMQTextMessage(); textMessage.setText("spring-queue的方式发送"); System.out.println("已发送消息..."); return textMessage; } }); } }测试结果如下
![](https://i-blog.csdnimg.cn/blog_migrate/7db274063b4973718cc97e0fba4924f1.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a9df405bd6c97f7911b1bec6d50b96e0.png)