Spring4.2 集成ActiveMQ5.14
1:libs
2:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--监听spring-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--Encoding Filter-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.test.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
</web-app>
3:applicationContext.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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-4.2.xsd"> <context:property-placeholder location="classpath:config.properties"/> <!-- ActiveMQ 连接工厂 -->
<bean id="amqConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>${amq.broker.url}</value>
</property>
<property name="userName">
<value>${amq.username}</value>
</property>
<property name="password">
<value>${amq.password}</value>
</property>
</bean>
</property>
<property name="maxConnections" value="${amq.max.connections}"></property>
</bean> <!-- Spring Caching连接工厂 -->
<bean id="myConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<!-- 目标 ConnectionFactory 对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="amqConnectionFactory"/>
<!-- Session缓存数量 -->
<property name="sessionCacheSize" value="${amq.session.cache.size}" />
</bean> <!-- JMS消息目的地 -->
<bean id="myDestinationQueue" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="${amq.queue}"/>
</bean> <!-- 定义JmsTemplate的Queue类型 -->
<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
<!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
<property name="connectionFactory" ref="myConnectionFactory"/>
<property name="defaultDestination" ref="myDestinationQueue"></property>
<!-- 非pub/sub模型(发布/订阅),即队列模式 -->
<property name="pubSubDomain" value="false" />
</bean> <!--JMS消息发送 -->
<bean id="sendService" class="com.microwisdom.jms.SendService">
<property name="jmsQueueTemplate" ref="jmsQueueTemplate"/>
</bean> <!--JMS消息接受 -->
<bean id="jmsReceiver" class="com.microwisdom.jms.JmsReceiver">
</bean> <!-- ListenerContainer 消息监听器-->
<bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="myConnectionFactory"></property>
<property name="destination" ref="myDestinationQueue"></property>
<property name="messageListener" ref="jmsReceiver"></property>
<!--设置固定的线程数-->
<property name="concurrentConsumers" value="${amq.concurrent.consumers}"></property>
<!--设置动态的线程数-->
<property name="concurrency" value="${amq.concurrency}"></property>
<!--设置最大线程数-->
<property name="maxConcurrentConsumers" value="${amq.max.concurrent.consumers}"></property>
</bean> </beans>
4:config.properties
#JMS消息服务信息
amq.broker.url=tcp://127.0.0.1:61616
#failover:(tcp://192.168.3.100:61616,tcp://192.168.3.110:61616,tcp://192.168.3.120:61616)
amq.username=admin
amq.password=admin amq.max.connections=
amq.session.cache.size=
amq.queue=test.queue amq.concurrent.consumers=
amq.concurrency=-
amq.max.concurrent.consumers=
5:SendService.java
package com.microwisdom.jms; import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator; /**
* @作者 yan
* @创建日期
* @版本 V1.0
* @描述
*/
public class SendService {
private JmsTemplate jmsQueueTemplate; public void setJmsQueueTemplate(JmsTemplate jmsQueueTemplate) {
this.jmsQueueTemplate = jmsQueueTemplate;
} /**
* 发送JMS消息
* @param msg
* @return
*/
public String sendMsg(final String msg) {
Message replyMsg = this.jmsQueueTemplate.sendAndReceive(new MessageCreator(){
public Message createMessage(Session sn) throws JMSException {
TextMessage txtMsg = sn.createTextMessage(msg);
return txtMsg;
}
}); TextMessage txtMsg = (TextMessage)replyMsg; String result = null; try {
result = txtMsg.getText();
} catch (JMSException ex) {
Logger.getLogger(SendService.class.getName()).log(Level.SEVERE, null, ex);
} return result;
}
}
6:JmsReceiver.java
package com.microwisdom.jms; import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.springframework.jms.listener.SessionAwareMessageListener;
import org.springframework.jms.support.JmsUtils; /**
* @作者 yan
* @创建日期
* @版本 V1.0
* @描述 JMS消息异步接收处理
*/
public class JmsReceiver implements SessionAwareMessageListener<TextMessage> { public void onMessage(TextMessage m, Session sn) {
MessageProducer producer = null;
String path; TextMessage txtMsg; try {
path = m.getText(); System.out.println("===========jms_receiver,收到消息:"+path); txtMsg = sn.createTextMessage("jms_receiver,消息处理返回........."); producer = sn.createProducer(null);
producer.send(m.getJMSReplyTo(), txtMsg);
} catch (JMSException ex) {
Logger.getLogger(JmsReceiver.class.getName()).log(Level.SEVERE, null, ex);
} finally {
JmsUtils.closeMessageProducer(producer);
}
} }
7:TestServlet.java
package com.test; import com.microwisdom.jms.SendService;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils; public class TestServlet extends HttpServlet {
SendService sendService; @Override
public void init() throws ServletException {
ServletContext sc = this.getServletContext();
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
sendService = wac.getBean("sendService", SendService.class);
} protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8"); String path = request.getParameter("path"); PrintWriter out = response.getWriter(); try {
out.print(sendService.sendMsg(path));
} finally {
out.close();
}
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
} }
Spring4.2 集成ActiveMQ5.14的更多相关文章
- Exception occurred while processing this request, check the log for more information!安装ActiveMq-5.14.1 配置安全验证报错解决
安装ActiveMq-5.14.1 并配置了安全验证成功后,客户端也连接成功了.服务端也能通过http://IP:8161登录到控制台. 但是在点击队列,想要查看队列视图时报错,如下图: 查看日志发 ...
- activemq5.14.5单节点安装Demo
什么情况下使用ActiveMQ? 1 多个项目之间集成 (1) 跨平台 (2) 多语言 (3) 多项目 2 降低系统间模块的耦合度,解耦 软件扩展性 3 系统前后端隔离 前后端 ...
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
上篇博文我们介绍了mybatis的基本概念与原理,这篇博文我们通过Spring与Mybatis集成,开发一个简单用户增删改查的Web项目. 基本准备工作 1.安装JDK1.6以上版本,安装与配置 2. ...
- ActiveMQ5.14.1+Zookeeper3.4.9高可用伪分布式部署
本文借鉴http://www.cnblogs.com/gossip/p/5977489.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的 ...
- activemq5.14+zookeeper3.4.9实现高可用
一.activeMQ主要的几类部署方式比较1.默认的单机部署(kahadb)activeMQ的默认存储的单机方式,以本地kahadb文件的方式存储,所以性能指标完全依赖本地磁盘IO,不能提供高可用. ...
- 13.SpringMVC和Spring集成(一) && 14.SpringMVC和Spring集成(二)
1.概念 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,Spring致力于J2EE应用的各层的解决方案,Spring是企业应用开发的“一站式”选择,并贯 ...
- 消息中间件activemq-5.14.1安全验证配置
activemq分为控制端和客户端,下面分别介绍安全认证配置方法. 1.控制端安全配置 (1). ActiveMQ目录conf下找到jetty.xml: <bean id="secur ...
- 报错 findMergedAnnotation activemq
springmvc 集成activemq引入activemq-all-5.14.4有冲突 springmvc 4.2.9集成activemq-5.14.4时报错,错误信息如下 NoSuchMethod ...
- 阿里RocketMq试用记录+简单的Spring集成
CSDN学院招募微信小程序讲师啦 程序猿全指南,让[移动开发]更简单! [观点]移动原生App开发 PK HTML 5开发 云端应用征文大赛,秀绝招,赢无人机! 阿里RocketMq试用记录+简单的S ...
随机推荐
- iOS 32位、 64位系统兼容性设置-Xcode创建支持IOS4.3以上版本的应用的方法
方法一: 如果是Xcode 5的话步骤为 点击项目名称->Build Settings->搜索 Architectures 这个里面的原始的值是Standard architectures ...
- git push origin master:master
$git push origin master:master (在local repository中找到名字为master的branch,使用它去更新remote repository下名字为mast ...
- 【Android病毒分析报告】- 手机支付毒王“银行悍匪”的前世今生
from://http://blog.csdn.net/androidsecurity/article/details/18984165 2014年1月8日,央视曝光了一款名为“银行悍匪”的手机银行木 ...
- WordPress主题开发:实现分页功能
注意的是这个受后台这里的文章篇数设置所影响~ 一.使用内置方法 (WordPress 4.1以前无效) the_posts_pagination 输出分页式导航,用法: <?php the_po ...
- Windows 同一时候开启核心显卡与独立显卡(不接显示器启动核芯显卡)
採用Mp4视频压缩格式编码时,非常耗CPU.所以决定上显卡.进行显卡加速.选择了Intel核心显卡进行视频编码加速,效果非常理想.但如今的问题是:在PC上如何同一时候开启核心显卡与独立显卡.经过几番周 ...
- JAVA card 应用开发(二) 在项目添加APPLET
在上篇博文中.<JAVA card 应用开发创建第一个APPLET>.介绍了一个项目从无到有. 那么.我们建立了这个项目后,仅仅有一个应用(一个可选AID),假设我希望这个项目能够有多个应 ...
- JS --- reduce()函数
定义: reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值.对空数组是不会执行回调函数的. 案例 计算数组总和 var num = [1,2,3,4,5 ...
- Mac与Mac之中的共享方式
前往 ---> 连接服务器 ---> 输入smb://带连接的服务器地址(smb://192.168.1.40)即可
- .Net Excel操作之NPOI(一)简介
一.NPOI简介 NPOI是一个开源项目,可以读/写xls,doc,ppt文件,有着广泛的应用. 使用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支 ...
- 也给我的E420拆机清清灰尘
用了两年,天气燥热,是得拆开清理下了,E430清理非常方便,拆开后面挡板就行,E420就麻烦很多,需要全部拆下,关于E420的拆机网上已经有非常详细的教程了,我这里做一些补充,有兴趣的同学欢迎参考. ...