Spring+ActiveMQ整合Demo

新建web工程,导入jar包到lib目录

,然后buildpath。

整体结构如下:

创建spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
  						http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  						http://activemq.apache.org/schema/core 
  						http://activemq.apache.org/schema/core/activemq-core-5.1.0.xsd
  						http://activemq.apache.org/camel/schema/spring 
  						http://activemq.apache.org/camel/schema/spring/camel-spring.xsd">
	
	<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL" value="tcp://127.0.0.1:61616" />
		<!-- <property name="userName" value="system"/>
        <property name="password" value="manager"/> -->
        <!-- 是否异步发送 -->  
        <property name="useAsyncSend" value="true" /> 
	</bean>

	<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
		<constructor-arg index="0" value="myTopic"/>
	</bean>

	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<property name="connectionFactory" ref="connectionFactory" />
		<property name="defaultDestination" ref="topicDestination" />
		<property name="receiveTimeout" value="10000"/>
		<property name="pubSubDomain" value="true" />
	</bean>
	
	<bean id="receiveMessageListener" class="com.jms.listener.ReceiveMessageListener" />
	<!-- 主题监听容器 (Topic) -->
	<bean id="listenerContainer"
		class="org.springframework.jms.listener.DefaultMessageListenerContainer">
		<property name="connectionFactory" ref="connectionFactory" />
		<property name="destination" ref="topicDestination" />
		<property name="messageListener" ref="receiveMessageListener" />
	</bean>

</beans>

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc" 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.xsd 
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-3.2.xsd 
	http://www.springframework.org/schema/mvc 
	http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

	<!-- 自动扫描(自动注入) -->
	<context:component-scan base-package="com.jms"/>

	<!-- 这个一定得有,注意了,如果其他配置也有需要这个,已经配置了,那不必了 -->
	<mvc:annotation-driven />
	
	<!-- 视图解析器 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass"
			value="org.springframework.web.servlet.view.JstlView" />
		<property name="prefix" value="/WEB-INF/view/" />
		<property name="suffix" value=".jsp"></property>
	</bean>

</beans>

SendMessageController

package com.jms.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import com.jms.message.MessageSender;

/**
 * 
 * ClassName: SendMessageController <br/> 
 * Function: 发送消息Controller <br/> 
 * date: 2018年4月26日 下午9:41:34 <br/> 
 * 
 * @author Jerry
 * @version
 */
@Controller
public class SendMessageController extends MultiActionController {

	private static final Logger logger = Logger.getLogger(SendMessageController.class);
	
	@Autowired
	private MessageSender messageSender;
	
	public MessageSender getMessageSender() {
		return messageSender;
	}

	public void setMessageSender(MessageSender messageSender) {
		this.messageSender = messageSender;
	}

	/**
	 * 
	 * sendMessage: 发送消息 <br/>
	 *
	 * @author Jerry
	 * @param req
	 * @param resp
	 * @return
	 */
	@RequestMapping("/send")
	public ModelAndView sendMessage(HttpServletRequest req,HttpServletResponse resp){
		Map<String, Object> map = new HashMap<>();
		String message = req.getParameter("message");
		messageSender.sendMessage(message);
		return new ModelAndView("success",map);
	}
}

ReceiveMessageListener

package com.jms.listener;

import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

import org.apache.log4j.Logger;

/**
 * 
 * ClassName: ReceiveMessageListener <br/> 
 * Function: 订阅者监听 <br/> 
 * date: 2018年4月26日 下午9:42:21 <br/> 
 * 
 * @author Jerry
 * @version
 */
public class ReceiveMessageListener implements MessageListener{

	private static final Logger logger = Logger.getLogger(ReceiveMessageListener.class);
	
	@Override
	public void onMessage(Message message) {
		if (message instanceof TextMessage) { 
			TextMessage text = (TextMessage) message;
			try {
				logger.info("收到的消息:"+text.getText());
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

}
MessageSender
package com.jms.message;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Service;

/**
 * 
 * ClassName: MessageSender <br/> 
 * Function: 发布者 <br/> 
 * date: 2018年4月26日 下午9:42:43 <br/> 
 * 
 * @author Jerry
 * @version
 */
@Service
public class MessageSender {

	private static final Logger logger = Logger.getLogger(MessageSender.class);
	@Autowired
	private JmsTemplate jmsTemplate;  
	public void setJmsTemplate(JmsTemplate jmsTemplate) {  
        this.jmsTemplate = jmsTemplate;  
    }  
	public void sendMessage(String message) {
		logger.info("发送的信息:"+message);
		jmsTemplate.send(new MessageCreator() {
			@Override
			public Message createMessage(Session session) throws JMSException {
				 TextMessage textMessage = session.createTextMessage(message);  
	             return textMessage;  
			}
		});
	}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:resources/spring.xml</param-value>
	</context-param>

	<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>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<!-- 防止spring内存溢出监听器 -->
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>
	<!-- spring mvc servlet -->
	<servlet>
		<servlet-name>springMvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:resources/spring-mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMvc</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!-- 配置session超时时间,单位分钟 -->
	<session-config>
		<session-timeout>900</session-timeout>
	</session-config>
</web-app>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<%  
    String path = request.getContextPath();  
    String basePath = request.getScheme() + "://"  
            + request.getServerName() + ":" + request.getServerPort()  
            + path + "/";  
%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
    <head>  
        <base href="<%=basePath%>">  
  
        <title>My JSP 'index.jsp' starting page</title>  
        <meta http-equiv="pragma" content="no-cache">  
        <meta http-equiv="cache-control" content="no-cache">  
        <meta http-equiv="expires" content="0">  
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
        <meta http-equiv="description" content="This is my page">  
    </head>    
    <body>  
        <div align="center" style="width: 500px; height: 300px; border:2px; borderColor:black">  
            <form action="send.do" method="post">  
                <table align="center">  
                    <tr>  
                        <th colspan="2">  
                            消息发送控制台  
                        </th>  
                    </tr>  
                    <tr>  
                        <td>  
                            消息内容:  
                        </td>  
                        <td>  
                            <input type="text" name="message">  
                        </td>  
                    </tr>  
                    <tr>  
                        <td align="center" colspan="2">  
                            <input type="reset" value="清除">  
                                  
                            <input type="submit" value="发送">  
                        </td>  
                    </tr>  
                </table>  
            </form>  
        </div>  
    </body>  

</html>  

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<%  
    String path = request.getContextPath();  
    String basePath = request.getScheme() + "://"  
            + request.getServerName() + ":" + request.getServerPort()  
            + path + "/";  
%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
    <head>  
        <base href="<%=basePath%>">  
  
        <title>My JSP 'index.jsp' starting page</title>  
        <meta http-equiv="pragma" content="no-cache">  
        <meta http-equiv="cache-control" content="no-cache">  
        <meta http-equiv="expires" content="0">  
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
        <meta http-equiv="description" content="This is my page">  
        <!--  
    <link rel="stylesheet" type="text/css" href=../../"styles.css" mce_href=../../"styles.css">  
    -->  
    </head>  
  
    <body>  
        <div align="center" style="width: 500px; height: 300px; border:2px; borderColor:black">  
            <form action="sendMessage.do" method="post">  
                <table align="center">  
                    <tr>  
                        <th colspan="2">  
                            消息发送报告  
                        </th>  
                    </tr>  
                    <tr>  
                        <td colspan="2">  
                            状态:发送成功  
                        </td>  
                    </tr>  
                    <tr>  
                        <td align="center" colspan="2">  
                            <a href=../../"index.jsp" mce_href=../../"index.jsp">返回</a>  
                        </td>  
                    </tr>  
                </table>  
            </form>  
        </div>  
    </body>  

</html>  

首页如下:


发送成功后:


再看下activemq管理中心

默认登陆账号密码:admin



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值