ActiveMQ JMS Spring的一个实例
2017-11-17 17:24
387 查看
工程目录结构:
applicationContext.xml
[html]
view plain
copy
print?
<?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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="false">
<!-- 开启包的自动扫描,手工注解方式交由spring管理 -->
<context:annotation-config />
<context:component-scan base-package="com.travelsky.jms.service" />
<bean id="listenerContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" ></property>
<property name="destination" ref="destination"></property>
<property name="messageListener" ref="messageListener"></property>
</bean>
<!-- 配置JMS连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"></property>
</bean>
<!-- 发送消息的目的地(一个队列) -->
<bean id="destination" class="org.apache.activemq.command.ActiveMQTopic">
<!-- 构造函数传入消息队列的名字 -->
<constructor-arg index="0" value="message" />
</bean>
<!-- 消息监听处理 -->
<!--
<bean id="messageListener" class="com.travelsky.jms.service.ReceiveMessageListener"></bean>
-->
<!-- 配置JMS模版 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="defaultDestination" ref="destination"></property>
</bean><!--
<bean id="messageSender" class="com.travelsky.jms.service.MessageSender">
<property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>
--><bean id="sendMessageController"
class="com.travelsky.jms.service.SendMessageController">
<property name="messageSender" ref="messageSender" />
<property name="successView" value="/success" />
</bean>
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/sendMessage.do">sendMessageController</prop>
</props>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="requestContextAttribute" value="rc" />
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
MessageSender.java
[java]
view plain
copy
print?
/*
* @(#) MessageSender.java
* @Author:Administrator(mail) 2013-10-2
* @Copyright (c) 2002-2013 Travelsky Limited. All rights reserved.
*/
package com.travelsky.jms.service;
import javax.annotation.Resource;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Service;
@Service("messageSender")
public class MessageSender {
public MessageSender(){
System.out.println("messageSender is constructor...");
}
private static final Logger LOG = Logger.getLogger(MessageSender.class);
@Resource private JmsTemplate jmsTemplate;
public void sendMessage(final String message) {
System.out.println("Send message: " + message);
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage(message);
return textMessage;
}
});
}
}
ReceiveMessageListener,java
[java]
view plain
copy
print?
package com.travelsky.jms.service;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
@Service("messageListener")
public class ReceiveMessageListener implements MessageListener {
public ReceiveMessageListener(){
System.out.println("ReceiveMessageListener...");
}
private static final Logger LOG = Logger.getLogger(ReceiveMessageListener.class);
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage text = (TextMessage) message;
try {
System.out.println("Received message:" + text.getText()+this);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
[java]
view plain
copy
print?
package com.travelsky.jms.service;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class SendMessageController extends MultiActionController {
private String successView;
private MessageSender messageSender;
public ModelAndView sendMessage(HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String, Object> retMap = new HashMap<String, Object>();
String message = request.getParameter("message");
messageSender.sendMessage(message);
return new ModelAndView(successView, retMap);
}
public String getSuccessView() {
return successView;
}
public void setSuccessView(String successView) {
this.successView = successView;
}
public MessageSender getMessageSender() {
return messageSender;
}
public void setMessageSender(MessageSender messageSender) {
this.messageSender = messageSender;
}
}
index,jsp
[html]
view plain
copy
print?
<%@ 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>消息内容:</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>
[html]
view plain
copy
print?
<%@ 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>
web.xml
[html]
view plain
copy
print?
<?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_2_5.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">
<display-name>WebMQ01</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
访问:http://localhost:8080/WebMQ1/index.jsp
点击发送:
控制台:
这个是通过监听方式获取到的消息,由于本例子程序是Topic通信(发布者/订阅者),所以也可以通过其他的客户端(消费者)获取消息:
Receiver2.java
[java]
view plain
copy
print?
/*
* @(#) Receiver.java
* @Author:Administrator(mail) 2013-9-29
* @Copyright (c) 2002-2013 Travelsky Limited. All rights reserved.
*/
package com.travelsky.jms.service;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
* @author Administrator(mail) 2013-9-29
* @version 1.0
* @Function 类功能说明
*/
public class Receiver2 {
public static void main(String[] args) {
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
try {
//为什么不用密码也可以获取消息
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createTopic("message");
MessageConsumer receiver = session.createConsumer(destination);
System.out.println("receive...");
TextMessage message = (TextMessage) receiver.receive();
String content = message.getText();
System.out.println(content);
session.commit();
session.close();
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
发送消息之前,先运行该消费者程序:
消息发送后(提交发送按钮后):
工程目录结构:
applicationContext.xml
[html]
view plain
copy
print?
<?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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"
default-lazy-init="false">
<!-- 开启包的自动扫描,手工注解方式交由spring管理 -->
<context:annotation-config />
<context:component-scan base-package="com.travelsky.jms.service" />
<bean id="listenerContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" ></property>
<property name="destination" ref="destination"></property>
<property name="messageListener" ref="messageListener"></property>
</bean>
<!-- 配置JMS连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"></property>
</bean>
<!-- 发送消息的目的地(一个队列) -->
<bean id="destination" class="org.apache.activemq.command.ActiveMQTopic">
<!-- 构造函数传入消息队列的名字 -->
<constructor-arg index="0" value="message" />
</bean>
<!-- 消息监听处理 -->
<!--
<bean id="messageListener" class="com.travelsky.jms.service.ReceiveMessageListener"></bean>
-->
<!-- 配置JMS模版 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="defaultDestination" ref="destination"></property>
</bean><!--
<bean id="messageSender" class="com.travelsky.jms.service.MessageSender">
<property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>
--><bean id="sendMessageController"
class="com.travelsky.jms.service.SendMessageController">
<property name="messageSender" ref="messageSender" />
<property name="successView" value="/success" />
</bean>
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/sendMessage.do">sendMessageController</prop>
</props>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="requestContextAttribute" value="rc" />
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
<?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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-lazy-init="false"> <!-- 开启包的自动扫描,手工注解方式交由spring管理 --> <context:annotation-config /> <context:component-scan base-package="com.travelsky.jms.service" /> <bean id="listenerContainer" class="org.springframework.jms.listener.SimpleMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" ></property> <property name="destination" ref="destination"></property> <property name="messageListener" ref="messageListener"></property> </bean> <!-- 配置JMS连接工厂 --> <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616"></property> </bean> <!-- 发送消息的目的地(一个队列) --> <bean id="destination" class="org.apache.activemq.command.ActiveMQTopic"> <!-- 构造函数传入消息队列的名字 --> <constructor-arg index="0" value="message" /> </bean> <!-- 消息监听处理 --> <!-- <bean id="messageListener" class="com.travelsky.jms.service.ReceiveMessageListener"></bean> --> <!-- 配置JMS模版 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"></property> <property name="defaultDestination" ref="destination"></property> </bean><!-- <bean id="messageSender" class="com.travelsky.jms.service.MessageSender"> <property name="jmsTemplate" ref="jmsTemplate"></property> </bean> --><bean id="sendMessageController" class="com.travelsky.jms.service.SendMessageController"> <property name="messageSender" ref="messageSender" /> <property name="successView" value="/success" /> </bean> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/sendMessage.do">sendMessageController</prop> </props> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="requestContextAttribute" value="rc" /> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
MessageSender.java
[java]
view plain
copy
print?
/*
* @(#) MessageSender.java
* @Author:Administrator(mail) 2013-10-2
* @Copyright (c) 2002-2013 Travelsky Limited. All rights reserved.
*/
package com.travelsky.jms.service;
import javax.annotation.Resource;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Service;
@Service("messageSender")
public class MessageSender {
public MessageSender(){
System.out.println("messageSender is constructor...");
}
private static final Logger LOG = Logger.getLogger(MessageSender.class);
@Resource private JmsTemplate jmsTemplate;
public void sendMessage(final String message) {
System.out.println("Send message: " + message);
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage(message);
return textMessage;
}
});
}
}
/* * @(#) MessageSender.java * @Author:Administrator(mail) 2013-10-2 * @Copyright (c) 2002-2013 Travelsky Limited. All rights reserved. */ package com.travelsky.jms.service; import javax.annotation.Resource; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.log4j.Logger; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import org.springframework.stereotype.Service; @Service("messageSender") public class MessageSender { public MessageSender(){ System.out.println("messageSender is constructor..."); } private static final Logger LOG = Logger.getLogger(MessageSender.class); @Resource private JmsTemplate jmsTemplate; public void sendMessage(final String message) { System.out.println("Send message: " + message); jmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws JMSException { TextMessage textMessage = session.createTextMessage(message); return textMessage; } }); } }
ReceiveMessageListener,java
[java]
view plain
copy
print?
package com.travelsky.jms.service;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
@Service("messageListener")
public class ReceiveMessageListener implements MessageListener {
public ReceiveMessageListener(){
System.out.println("ReceiveMessageListener...");
}
private static final Logger LOG = Logger.getLogger(ReceiveMessageListener.class);
public void onMessage(Message message) {
if (message instanceof TextMessage) {
TextMessage text = (TextMessage) message;
try {
System.out.println("Received message:" + text.getText()+this);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
package com.travelsky.jms.service; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import org.apache.log4j.Logger; import org.springframework.stereotype.Service; @Service("messageListener") public class ReceiveMessageListener implements MessageListener { public ReceiveMessageListener(){ System.out.println("ReceiveMessageListener..."); } private static final Logger LOG = Logger.getLogger(ReceiveMessageListener.class); public void onMessage(Message message) { if (message instanceof TextMessage) { TextMessage text = (TextMessage) message; try { System.out.println("Received message:" + text.getText()+this); } catch (JMSException e) { e.printStackTrace(); } } } }SendMessageController.java
[java]
view plain
copy
print?
package com.travelsky.jms.service;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class SendMessageController extends MultiActionController {
private String successView;
private MessageSender messageSender;
public ModelAndView sendMessage(HttpServletRequest request,
HttpServletResponse response) throws Exception {
Map<String, Object> retMap = new HashMap<String, Object>();
String message = request.getParameter("message");
messageSender.sendMessage(message);
return new ModelAndView(successView, retMap);
}
public String getSuccessView() {
return successView;
}
public void setSuccessView(String successView) {
this.successView = successView;
}
public MessageSender getMessageSender() {
return messageSender;
}
public void setMessageSender(MessageSender messageSender) {
this.messageSender = messageSender;
}
}
package com.travelsky.jms.service; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class SendMessageController extends MultiActionController { private String successView; private MessageSender messageSender; public ModelAndView sendMessage(HttpServletRequest request, HttpServletResponse response) throws Exception { Map<String, Object> retMap = new HashMap<String, Object>(); String message = request.getParameter("message"); messageSender.sendMessage(message); return new ModelAndView(successView, retMap); } public String getSuccessView() { return successView; } public void setSuccessView(String successView) { this.successView = successView; } public MessageSender getMessageSender() { return messageSender; } public void setMessageSender(MessageSender messageSender) { this.messageSender = messageSender; } }
index,jsp
[html]
view plain
copy
print?
<%@ 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>消息内容:</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>
<%@ 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>消息内容:</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
[html]
view plain
copy
print?
<%@ 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>
<%@ 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>
web.xml
[html]
view plain
copy
print?
<?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_2_5.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">
<display-name>WebMQ01</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
<?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_2_5.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"> <display-name>WebMQ01</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:applicationContext.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>controller</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:applicationContext.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>controller</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
访问:http://localhost:8080/WebMQ1/index.jsp
点击发送:
控制台:
这个是通过监听方式获取到的消息,由于本例子程序是Topic通信(发布者/订阅者),所以也可以通过其他的客户端(消费者)获取消息:
Receiver2.java
[java]
view plain
copy
print?
/*
* @(#) Receiver.java
* @Author:Administrator(mail) 2013-9-29
* @Copyright (c) 2002-2013 Travelsky Limited. All rights reserved.
*/
package com.travelsky.jms.service;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
* @author Administrator(mail) 2013-9-29
* @version 1.0
* @Function 类功能说明
*/
public class Receiver2 {
public static void main(String[] args) {
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
try {
//为什么不用密码也可以获取消息
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createTopic("message");
MessageConsumer receiver = session.createConsumer(destination);
System.out.println("receive...");
TextMessage message = (TextMessage) receiver.receive();
String content = message.getText();
System.out.println(content);
session.commit();
session.close();
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/* * @(#) Receiver.java * @Author:Administrator(mail) 2013-9-29 * @Copyright (c) 2002-2013 Travelsky Limited. All rights reserved. */ package com.travelsky.jms.service; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; /** * @author Administrator(mail) 2013-9-29 * @version 1.0 * @Function 类功能说明 */ public class Receiver2 { public static void main(String[] args) { ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); try { //为什么不用密码也可以获取消息 Connection connection = factory.createConnection(); connection.start(); Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createTopic("message"); MessageConsumer receiver = session.createConsumer(destination); System.out.println("receive..."); TextMessage message = (TextMessage) receiver.receive(); String content = message.getText(); System.out.println(content); session.commit(); session.close(); connection.close(); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
发送消息之前,先运行该消费者程序:
消息发送后(提交发送按钮后):
相关文章推荐
- ActiveMQ JMS Spring的一个实例
- ActiveMQ JMS Spring的一个实例
- Spring ActiveMQ Caused By: javax.jms.IllegalStateException: Connection closed
- jms+spring+activemq配置(发送和接收消息)
- spring整合activemq发送MQ消息[Topic模式]实例,activemqmq
- Spring ActiveMQ 整合(三): 确认机制ACK(收到消息后,应该有一个回应也就是确认答复)
- Spring+JMS+ActiveMQ+Tomcat实现消息服务
- Spring JMS ActiveMQ整合(转)
- Spring+JMS+ActiveMQ+Tomcat实现消息服务
- jms activeMQ与spring的集成(转载)
- hjr-JAVA:Spring-boot和MQ-ActiveMQ +JMS
- Spring + JMS + ActiveMQ实现简单的消息队列(监听器异步实现)
- JMS——Spring+ActiveMQ
- Spring全家桶(1):Spring JMS + ActiveMQ起步
- JMS学习十(Spring+ActiveMQ同步、异步)
- Spring + ActiveMQ实现jms发送消息
- Spring+ActiveMQ+Mysql 配置JMS
- jms activeMQ与spring集成进阶篇(转载)
- Spring + ActiveMQ实现jms发送消息
- Spring+JMS+ActiveMQ+Tomcat实现消息服务