JMS ActiveMQ学习(一)(二)

2014-11-24 09:01:33 · 作者: · 浏览: 8
然后在修改web.xml,在里面加上:

jms-listener

com.flvcd.servlet.JMSListener

1

然后在src下的包里新建一个类,类名是JMSListener.java

再复制一下代码到你的类中:

package com.flvcd.servlet;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.naming.*;

import javax.jms.*;

import org.apache.activemq.ActiveMQConnectionFactory;

publicclass JMSListener extends HttpServlet implements MessageListener {

/**初始化jms连接,创建topic监听器*/

publicvoid init(ServletConfig config) throws ServletException {

try {

InitialContext initCtx = new InitialContext();

Context envContext = (Context) initCtx.lookup("java:comp/env");

ConnectionFactory connectionFactory = (ConnectionFactory) envContext

.lookup("jms/FailoverConnectionFactory");

Connection connection = connectionFactory.createConnection();

connection.setClientID("MyClient");

Session jmsSession = connection.createSession(false,

Session.AUTO_ACKNOWLEDGE);

// 普通消息订阅者,无法接收持久消息 //MessageConsumer consumer =

// jmsSession.createConsumer((Destination)

// envContext.lookup("jms/topic/MyTopic"));

// //基于Topic创建持久的消息订阅者,前提:Connection必须指定一个唯一的clientId,当前为MyClient

TopicSubscriberconsumer=jmsSession.createDurableSubscriber((Topic)envContext.lookup("jms/topic/MyTopic"), "MySub");

consumer.setMessageListener(this);

connection.start();

} catch (NamingException e) {

e.printStackTrace();

} catch (JMSException e) {

e.printStackTrace();

}

}

/**接收消息,做对应处理*/

publicvoid onMessage(Message message) {

if (checkText(message, "RefreshArticleId") != null) {

String articleId = checkText(message, "RefreshArticleId");

System.out.println("接收刷新文章消息,开始刷新文章ID=" + articleId);

} elseif (checkText(message, "RefreshThreadId") != null) {

String threadId = checkText(message, "RefreshThreadId");

System.out.println("接收刷新论坛帖子消息,开始刷新帖子ID=" + threadId);

} else {

System.out.println("接收普通消息,不做任何处理!");

}

}

privatestatic String checkText(Message m, String s) {

try {

return m.getStringProperty(s);

} catch (JMSException e) {

e.printStackTrace(System.out);

returnnull;

}

}

}

你的监听端建好

现在开始建立你发布端

同样是新建一个类MyPublish.java

然后复制一下代码到你的类里

package com.flvcd.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.DeliveryMode;

import javax.jms.Destination;

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.jms.MessageProducer;

import javax.jms.Session;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class MyPublish extends HttpSer