您的位置:首页 > 编程语言 > Java开发

Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收

2017-03-30 15:08 627 查看
最近项目中用到了消息中间件,拿到任务后,各种百度各种学习,现将学习的一个小成果记录一下。

 环境:

     windows环境下: Spring 3.2.8     、Tomcat 7    、JDK 1.6  、 ActiveMQ 5.9.0 

项目目录结构:

         


applicationContext.xml

<!--创建连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"></property>
</bean>

<!-- 声明ActiveMQ消息目标,目标可以是一个队列,也可以是一个主题ActiveMQTopic -->
<bean id="destinationOne" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="testQueOne"></constructor-arg>
</bean>

<!-- 设置 消息目的地 start -->
<bean id="jmsTemplateOne" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="defaultDestination" ref="destinationOne"></property>
<property name="receiveTimeout" value="6000"></property>
</bean>
<!-- 设置 消息目的地 end -->

<!-- 配置生产者 start -->
<bean id="senderOne" class="com.dly.avtivemqtest.SenderOne">
<property name="jmsTemplateOne" ref="jmsTemplateOne"></property>
</bean>
<!-- 配置生产者 end -->

<!-- 配置消费者 start -->
<bean id="receiverOne" class="com.dly.avtivemqtest.ReceiverOne">
<!-- <property name="jmsTemplate" ref="jmsTemplate"></property> -->
</bean>
<!-- 配置消费者 end -->

<!-- 消息监听器 -->
<bean id="consumerMessageListenerOfOne" class="com.dly.avtivemqtest.ReceiverOne" />

<!-- 消息监听容器 消息接收监听器用于异步接收消息 -->
<bean id="jmsContainerOne" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="destinationOne" />
<property name="messageListener" ref="consumerMessageListenerOfOne" />
</bean>
</beans>
SenderOne.java

public class SenderOne {
private JmsTemplate jmsTemplateOne;

public JmsTemplate getJmsTemplateOne() {
return jmsTemplateOne;
}

public void setJmsTemplateOne(JmsTemplate jmsTemplateOne) {
this.jmsTemplateOne = jmsTemplateOne;
}

//测试的
public void sendInfo(final String messageRecord,final String flag) {
jmsTemplateOne.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage message = session.createTextMessage();
return message;
}
});
}
}

ReceiverOne.java

public class ReceiverOne  implements MessageListener {
//测试方法
public void onMessage(Message message, Session session) {

//这里我们知道生产者发送的就是一个纯文本消息,所以这里可以直接进行强制转换
TextMessage textMsg = (TextMessage) message;
try {
String endStr = textMsg.getText();
Integer endInt = Integer.parseInt(endStr);
System.out.println("消息:==="+endInt);
} catch (Exception e) {
e.printStackTrace();
System.out.println("异常信息是:===:" + e.getMessage());
}
}

}
JMSTest.java

public class JMSTest {
public static void main(String[] args) {

ApplicationContext context = new ClassPathXmlApplicationContext("resources/applicationContext.xml");
SenderOne sender = (SenderOne) context.getBean("senderOne");
sender.sendInfo("10","2");
}
}

运行JMSTest的结果:

     


看到控制台答应出来的 2 ,就说明  这个消息是发送成功   并且能,成功接收的,说明我们的topic消息的发送与接收是成功的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: