创建一个web工程
导入ActiveMQ依赖的jar包 activemq-all-5.9.jar
写一个生产者(send)servlet
package com.sun.jms;
import java.io.IOException;import java.io.PrintWriter;import javax.jms.DeliveryMode;
import javax.jms.Queue;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueSender;import javax.jms.QueueSession;import javax.jms.Session;import javax.jms.TextMessage;import javax.naming.InitialContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/**
* Servlet implementation class JMSTest */@WebServlet("/Send")public class Send extends HttpServlet { private static final long serialVersionUID = 1L;/**
* @see HttpServlet#HttpServlet() */ public Send() { super(); // TODO Auto-generated constructor stub }/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter();try {
// get the initial context InitialContext context = new InitialContext();// lookup the queue object
Queue queue = (Queue) context.lookup("java:comp/env/queue/queue0");// lookup the queue connection factory
QueueConnectionFactory conFactory = (QueueConnectionFactory) context .lookup("java:comp/env/queue/connectionFactory");// create a queue connection
QueueConnection queConn = conFactory.createQueueConnection();// create a queue session
QueueSession queSession = queConn.createQueueSession(false, Session.DUPS_OK_ACKNOWLEDGE);// create a queue sender
QueueSender queSender = queSession.createSender(queue); queSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);// create a simple message to say "Hello World"
TextMessage message = queSession.createTextMessage("Hello World");// send the message
queSender.send(message);// print what we did
out.write("Message Sent: " + message.getText());// close the queue connection
queConn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub }}
======================================================
写一个消费者(Receive)servlet
package com.sun.jms;
import java.io.IOException;
import java.io.PrintWriter;import javax.jms.Queue;
import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueReceiver;import javax.jms.QueueSession;import javax.jms.Session;import javax.jms.TextMessage;import javax.naming.InitialContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;/**
* Servlet implementation class Receive */@WebServlet("/Receive")public class Receive extends HttpServlet { private static final long serialVersionUID = 1L;/**
* @see HttpServlet#HttpServlet() */ public Receive() { super(); // TODO Auto-generated constructor stub }/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter();try {
// get the initial context InitialContext context = new InitialContext();// lookup the queue object
Queue queue = (Queue) context.lookup("java:comp/env/queue/queue0");// lookup the queue connection factory
QueueConnectionFactory conFactory = (QueueConnectionFactory) context .lookup("java:comp/env/queue/connectionFactory");// create a queue connection
QueueConnection queConn = conFactory.createQueueConnection();// create a queue session
QueueSession queSession = queConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);// create a queue receiver
QueueReceiver queReceiver = queSession.createReceiver(queue);// start the connection
queConn.start();// receive a message
TextMessage message = (TextMessage) queReceiver.receive();// print the message
out.write("Message Received: " + message.getText());// close the queue connection
queConn.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub }}
=====================================================
配置tomcat的tomcat\conf\context.xml
<Resource name="queue/connectionFactory"
auth="Container" type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" brokerURL="tcp://localhost:61616" brokerName="LocalActiveMQBroker" /> <Resource name="queue/queue0" auth="Container" type="org.apache.activemq.command.ActiveMQQueue" description="My Queue" factory="org.apache.activemq.jndi.JNDIReferenceFactory" physicalName="TomcatQueue" />=======================================================
启动ActiveMQ 进入http://localhost:8161/admin/queues.jsp
默认用户名和密码是admin
运行后效果: