ActiveMQ简单入门实例

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

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

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

Chat.javaide


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);
}
}


}
}
this


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);
}
}
}
}
spa

相关文章
相关标签/搜索