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的更多相关文章

  1. Exception occurred while processing this request, check the log for more information!安装ActiveMq-5.14.1 配置安全验证报错解决

    安装ActiveMq-5.14.1  并配置了安全验证成功后,客户端也连接成功了.服务端也能通过http://IP:8161登录到控制台. 但是在点击队列,想要查看队列视图时报错,如下图: 查看日志发 ...

  2. activemq5.14.5单节点安装Demo

    什么情况下使用ActiveMQ? 1     多个项目之间集成 (1) 跨平台 (2) 多语言 (3) 多项目 2     降低系统间模块的耦合度,解耦 软件扩展性 3     系统前后端隔离 前后端 ...

  3. 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载

    上篇博文我们介绍了mybatis的基本概念与原理,这篇博文我们通过Spring与Mybatis集成,开发一个简单用户增删改查的Web项目. 基本准备工作 1.安装JDK1.6以上版本,安装与配置 2. ...

  4. ActiveMQ5.14.1+Zookeeper3.4.9高可用伪分布式部署

    本文借鉴http://www.cnblogs.com/gossip/p/5977489.html,在此基础上进行了完善,使之成为一个完整版的伪分布式部署说明,在此记录一下! 一.本文目的       ...

  5. activemq5.14+zookeeper3.4.9实现高可用

    一.activeMQ主要的几类部署方式比较1.默认的单机部署(kahadb)activeMQ的默认存储的单机方式,以本地kahadb文件的方式存储,所以性能指标完全依赖本地磁盘IO,不能提供高可用. ...

  6. 13.SpringMVC和Spring集成(一) && 14.SpringMVC和Spring集成(二)

    1.概念 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,Spring致力于J2EE应用的各层的解决方案,Spring是企业应用开发的“一站式”选择,并贯 ...

  7. 消息中间件activemq-5.14.1安全验证配置

    activemq分为控制端和客户端,下面分别介绍安全认证配置方法. 1.控制端安全配置 (1). ActiveMQ目录conf下找到jetty.xml: <bean id="secur ...

  8. 报错 findMergedAnnotation activemq

    springmvc 集成activemq引入activemq-all-5.14.4有冲突 springmvc 4.2.9集成activemq-5.14.4时报错,错误信息如下 NoSuchMethod ...

  9. 阿里RocketMq试用记录+简单的Spring集成

    CSDN学院招募微信小程序讲师啦 程序猿全指南,让[移动开发]更简单! [观点]移动原生App开发 PK HTML 5开发 云端应用征文大赛,秀绝招,赢无人机! 阿里RocketMq试用记录+简单的S ...

随机推荐

  1. ibatis.net:第七天,QueryWithRowDelegate

    xml <statement id="FindOrdersByCustomer" parameterClass="string" resultClass= ...

  2. SEO如何利用百度知道日引流上千IP

    个人小站长.SEO们经常为网站没有流量而发愁,一个没有流量的网站就像一个不喝水的人,迟早得死.没有流量,就没有PV,也就是说你的网站只是 给你一个人看的,那做站有什么意义呢?网站上所发布的内容都是分享 ...

  3. Java并发编程的艺术(六)——线程间的通信

    多条线程之间有时需要数据交互,下面介绍五种线程间数据交互的方式,他们的使用场景各有不同. 1. volatile.synchronized关键字 PS:关于volatile的详细介绍请移步至:Java ...

  4. 实用ExtJS教程100例-004:等待对话框Ext.MessageBox.wait

    在前面两节中,我们分别演示了ExtJS三种常用的对话框和ExtJS带有进度条的对话框.在本节内容中,我们来看看ExtJS中的等待对话框. 首先来看一个简单的例子[查看在线示例]: 这种对话框会一直滚动 ...

  5. C# 程序设置开机启动(一)

    一.示例使用VBScript创建启动文件,并添加到Windows系统的启动目录 默认情况下 所有用户启动目录:C:\ProgramData\Microsoft\Windows\Start Menu\P ...

  6. 我讨厌Apple Safari浏览器的一些地方。不想用

    1. 书签栏 无法直接新建文件夹 2. 新建书签 无法新建文件夹 3.地址栏 不显示当前书签 是否已收藏! 4. 书签栏 移动书签,体验没有Chrome好. 5.书签栏 没有chrone的 " ...

  7. 鼠标悬浮在img上让图片变大

    样式: <style type="text/css">        img:hover{ transform:scale(1.02,1.02)}</style& ...

  8. unity 3d yield 用法总结

    最近,需要需要用unity 3d做点东西,但是了碰到了延迟加载问题,我总结余下: Coroutines & Yield是unity3d编程中重要的概念,它可以实现将一段程序延迟执行或者将其各个 ...

  9. android Logger 一二三

    我们在开发Android应用的过程中可以很方便地使用Log信息来调试程序,这都归功于Android的Logger驱动为用户层提供的Log支持.无论是底层的源代码还是上层的应用,我们都可以使用Logge ...

  10. AI 也开源:50 大开源 AI 项目 (转)

    这些开源AI项目专注于机器学习.深度学习.神经网络及其他应用场合. 自IT界早期以来,研制出能像人类那样“思考”的机器一直是研究人员的一大目标.在过去几年,计算机科学家们在人工智能(AI)领域已取得了 ...