第一步,导入maven依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!-- 整合jms服务 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<!-- ActiveMQ -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>4.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
</dependencies>
第二步,添加各种配置信息。
1.在spring的配置文件里设置Activemq的连接工厂,相当于设置连接源。使用的是activemq自己的类。
org.apche.activemq.ActiveMqConnectionfactory.使用spring构造注入的方式设置参数。
<bean id="amqconnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<!-- 用户名 -->
<constructor-arg index="0" value="admin"></constructor-arg>
<!-- 密码 -->
<constructor-arg index="1" value="admin"></constructor-arg>
<!-- 连接地址 -->
<constructor-arg index="2" value="tcp://localhost:61616"></constructor-arg>
</bean>
2.设置spring中的连接工厂,需要使用上一步的Activemq工厂做参数。
<bean id="connectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory">
<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="amqconnectionFactory"></property>
<!-- Session缓存数量 -->
<property name="sessionCacheSize" value="100" />
</bean>
3.设置消息生产者,使用spring提供的模板
jmsQueueTemplate
这个对象最终是用来发送消息的,要注入到我们发送消息的类中。首先先注册在spring中,给spring管理。
<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
<constructor-arg ref="connectionFactory"></constructor-arg>
<!-- 定义JmsTemplate的Queue类型 -->
<!--true : 发布/订阅模式,也叫主题模式 -->
<!--false : 队列模式 -->
<property name="pubSubDomain" value="false" />
</bean>
4.设置消息消费者。
<jms:listener-container destination-type="queue"
container-type="default" connection-factory="connectionFactory"
acknowledge="auto">
<!--
指定具体的消息的消费者
destination : 指定队列的名字
ref: 消费者
-->
<jms:listener destination="test.queue" ref="consumer" />
</jms:listener-container>
第三步。就是使用Activmq发送消息来测试我们的配置了。
1.创建一个发送者
@Component
public class SendMessage {
@Autowired
private JmsTemplate jmsTemplate; //spring的模板
public void sendMsg(String destintionName,final String msg){ //第一个参数消息发送到哪里去的队列名,消息消费者根据这个名字在MQ中找消息,第二个参数是我们发送的消息内容。
jmsTemplate.send(destintionName, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage(msg); //创建一个文本消息。
return textMessage;
}
});
}
}
2.创建一个消息接受者。首先他要实现MessageListener接口。实现里面的onMessage方法
@Component
public class Consumer implements MessageListener{
@Override
public void onMessage(Message msg) {
TextMessage textMessage = (TextMessage) msg;
String text = null;
try {
text = textMessage.getText();
} catch (JMSException e) {
e.printStackTrace();
}
System.out.println("收到消息了 : " + text);
}
}
四·开始测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring.xml")
public class JmsTest {
@Autowired
private SendMessage producer;
@Test
public void test() {
producer.sendMsg("test.queue", "hello activeMQ");
while (true) {
}
}
}