【ActiveMQ入门-8】ActiveMQ学习-与Spring集成
2015-04-30 09:37
471 查看
概述:[/b]下面将介绍如何在Spring下集成ActiveMQ。消费者:同步接收;目的地:topic
环境:[/b]主要包括4个文件:
HelloSender.java;
JMSTest.java;
ProxyJMSConsumer.java;
applicationContext-jms.xml(配置文件);
需要使用的jar包如下:
源文件:[/b]HelloSender.java
[/code]ProxyJMSConsumer.java
[/code]JMSTest.java
[/code]
配置文件:[/b]applicationContext-jms.xml
环境:[/b]主要包括4个文件:
HelloSender.java;
JMSTest.java;
ProxyJMSConsumer.java;
applicationContext-jms.xml(配置文件);
需要使用的jar包如下:
源文件:[/b]HelloSender.java
package com.ll.springActiveMQ1;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
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 HelloSender {
/**
* @param args
* jmsTemplate和destination都是在spring配置文件中进行配制的
* Sender只使用了配置文件中的jmsFactory,jmsTemplate,还有destination这三个属性
*/
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-jms.xml");
JmsTemplate template = (JmsTemplate) applicationContext.getBean("jmsTemplate");
Destination destination = (Destination) applicationContext.getBean("destination");
template.send(destination, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("发送消息:Hello ActiveMQ Text Message2!");
}
});
System.out.println("成功发送了一条JMS消息");
}
}
[/code]ProxyJMSConsumer.java
package com.ll.springActiveMQ1;
import javax.jms.Destination;
import javax.jms.TextMessage;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
/**
* JMS消费者 消息题的内容定义 消息对象 接收消息对象后: 接收到的消息体*
* <p>
*/
public class ProxyJMSConsumer {
/**
* 构造函数
*/
public ProxyJMSConsumer() {
}
/**
*
*/
private JmsTemplate jmsTemplate;
public JmsTemplate getJmsTemplate() {
return jmsTemplate;
}
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
/**
*监听到消息目的有消息后自动调用onMessage(Message message)方法
*/
public void recive() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext-jms.xml");
Destination destination = (Destination) applicationContext
.getBean("destination");
while (true) {
try {
//同步接收
TextMessage txtmsg = (TextMessage) jmsTemplate
.receive(destination);
if (null != txtmsg) {
System.out.println("[DB Proxy] " + txtmsg);
System.out.println("[DB Proxy] 收到消息内容为: "
+ txtmsg.getText());
} else {
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
[/code]JMSTest.java
package com.ll.springActiveMQ1;
import org.apache.commons.logging.Log;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class JMSTest {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext-jms.xml");
ProxyJMSConsumer proxyJMSConsumer = (ProxyJMSConsumer) applicationContext.getBean("messageReceiver");
proxyJMSConsumer.recive();
System.out.println("初始化消息消费者");
}
}
[/code]
配置文件:[/b]applicationContext-jms.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" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd"[/code]default-autowire="byName"><!-- 配置connectionFactory --><bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"destroy-method="stop"><property name="connectionFactory"><bean class="org.apache.activemq.ActiveMQConnectionFactory"><property name="brokerURL"><value>tcp://127.0.0.1:61616</value></property></bean></property><property name="maxConnections" value="100"></property></bean><!-- Spring JMS Template --><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><property name="connectionFactory"><ref local="jmsFactory" /></property><property name="defaultDestinationName" value="subject" /><!-- 区别它采用的模式为false是p2p为true是订阅 --><property name="pubSubDomain" value="true" /></bean><!-- 发送消息的目的地(一个队列) --><bean id="destination" class="org.apache.activemq.command.ActiveMQTopic"><!-- 设置消息队列的名字 --><constructor-arg index="0" value="subject" /></bean><bean id="messageReceiver" class="com.ll.springActiveMQ1.ProxyJMSConsumer">
<property name="jmsTemplate" ref="jmsTemplate"></property></bean></beans>
[/code]
[/b]运行顺序:[/b]首先运行JMSTest,然后运行HelloSender。
[/b]运行结果:[/b]
来自为知笔记(Wiz)附件列表
相关文章推荐
- 【ActiveMQ入门-9】ActiveMQ学习-与Spring集成2
- Memcached入门学习四(spring 集成MemCached)
- ActiveMQ入门实例及与Spring集成
- spring boot 集成 mybatis 入门级学习
- ActiveMQ学习总结——(四)Spring集成JMS连接AcitveMQ
- ActiveMQ学习总结(6)——ActiveMQ集成Spring和Log4j实现异步日志
- ActiveMQ学习总结(6)——ActiveMQ集成Spring和Log4j实现异步日志
- springboot 系统学习5 集成 activemq
- ActiveMQ学习总结(6)——ActiveMQ集成Spring和Log4j实现异步日志
- spring 集成 mina入门
- ActiveMQ入门教程(五) - ActiveMQ与Spring整合
- Memcached-学习(二)XMemcached&Spring集成
- Quartz学习——Spring和Quartz集成详解(三)
- 搭建spring boot集成mybatis项目入门
- 持续集成学习笔记-入门篇(1)持续集成基本概念
- SpringBoot入门-20(springboot集成mybatis注解形式properties配置,利用@Provider实现动态SQL)
- Spring入门学习——加载外部资源
- Spring Boot 学习(一)入门及使用
- JAVA学习笔记26——ActiveMQ讲解之整合Spring(二)
- RabbitMQ学习以及与Spring的集成(二)