您的位置:首页 > 其它

ActiveMQ简单入门实例

2014-05-20 16:52 302 查看
第一步:下载ActiveMQ 官网地址:http://activemq.apache.org/ ;将下载好的压缩包解压出来。E:\study\apache-activemq-5.9.1\bin下面有个activemq.bat执行脚本直接启动mq(需要安装JDK并且配置环境变量)。(此处路径是我的路径)

第二步:创建一个普通的java项目。将E:\study\apache-activemq-5.9.1下面的activemq-all-5.9.1.jar包拷贝到项目中。

第三步:编写一个简单的客户端聊天程序

Chat.java

package org.walden.chp02;

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.jms.TextMessage;

import javax.jms.Topic;

import javax.jms.TopicConnection;

import javax.jms.TopicConnectionFactory;

import javax.jms.TopicPublisher;

import javax.jms.TopicSession;

import javax.jms.TopicSubscriber;

import javax.naming.NamingException;

import org.apache.activemq.ActiveMQConnectionFactory;

import org.apache.activemq.command.ActiveMQTopic;

public class Chat implements MessageListener{

private TopicSession pubSession;

private TopicPublisher publisher;

private TopicConnection connection;

private String username;

/**

* 初始化构造函数

* 创建一个新的实例 Chat.

*

* @param username

* @throws NamingException

* @throws JMSException

*/

public Chat(String username) throws NamingException, JMSException{

//创建一个JMS连接工厂。并创建JMS连接

TopicConnectionFactory factory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");

TopicConnection connection = factory.createTopicConnection();

//创建两个JMS会话对象

TopicSession pubSession = connection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);

TopicSession subSession = connection.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);

//创建一个JMS主题

Topic chatTopic = new ActiveMQTopic("topic");//主题名字随便写

//创建一个JMS订阅者与发布者.createPublisher附带的参数是一个消息

TopicPublisher publisher = pubSession.createPublisher(chatTopic);

//选择器null和nolocal标识一个真值,它表示这个发布者生成的消息不应该被它自己消费

TopicSubscriber subscriber = subSession.createSubscriber(chatTopic/*, null, true*/);

//设置一个JMS消息侦听器

subscriber.setMessageListener(this);

//初始化Chat变量

this.connection = connection;

this.pubSession = pubSession;

this.username = username;

this.publisher = publisher;

//启用JMS连接,允许发送消息

this.connection.start();

}

/**

* 接收来自TopicSubScriber的消息

*/

@Override

public void onMessage(Message message) {

try {

TextMessage textMessage = (TextMessage) message;

System.out.println(textMessage.getText());

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 使用发布者发送消息

* writeMessage(这里用一句话描述这个方法的作用)

*/

public void writeMessage(String text) throws JMSException{

TextMessage textMessage = pubSession.createTextMessage();

textMessage.setText(username+":"+text);

publisher.publish(textMessage);

}

/**

* 关闭聊天程序

*/

public void closeChat() throws JMSException{

connection.close();

}

}

第五步:编写测试类

package org.walden.chp02;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import javax.jms.JMSException;

import javax.naming.NamingException;

public class TestChat1 {

public static void main(String[] args) throws IOException, NamingException,

JMSException {

Chat chat = new Chat(TestChat1.class.getName());

BufferedReader reader = new BufferedReader(new InputStreamReader(

System.in));

while (true) {

String text ="chat1:"+ reader.readLine();

if (text.endsWith("exit")) {

chat.closeChat();

System.exit(0);

} else {

chat.writeMessage(text);

}

}

}

}

package org.walden.chp02;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import javax.jms.JMSException;

import javax.naming.NamingException;

public class TestChat2 {

public static void main(String[] args) throws NamingException, JMSException, IOException {

Chat chat = new Chat(TestChat2.class.getName());

BufferedReader reader = new BufferedReader(new InputStreamReader(

System.in));

while (true) {

String text ="chat2:"+ reader.readLine();

if (text.endsWith("exit")) {

chat.closeChat();

System.exit(0);

} else {

chat.writeMessage(text);

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: