这是本人的学习笔记 如果你看到这个笔记 如果有什么问题 可以留言一起学习
linux下安装activeMQ的安装过程:
[root@localhost ~]# tar -zxf apache-activemq-5.12.0-bin.tar.gz
[root@localhost apache-activemq-5.12.0]# cd bin
[root@localhost bin]# service iptables stop-----关闭防火墙
[root@localhost bin]# ./ activemq start
访问:http://192.168.25.127:8161/admin/
测试代码
添加jar包 到工程下
import static org.junit.Assert.*;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQMapMessage;
import org.apache.activemq.command.ActiveMQTextMessage;
import org.junit.Test;
public class TestActiveMQ {
// ==========================================================================================
// point-to-point PTP模式 这是第一种方式点对点方式
// queue
// producer
@Test
public void testQueueProducer() throws Exception {
// 1.创建一个连接工厂ConnectionFactory对象
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.127:61616");
// 2.需要ConnectionFactory创建一个连接对象
Connection connection = connectionFactory.createConnection();
// 3.开启连接
connection.start();
// 4.使用Connection对象创建一个session对象
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5.使用Sessiond对象创建Destination对象 两种形式 一种是queue topic 现在使用queue
Queue queue = session.createQueue("test-queue");
// 6.使用Session对象创建一个生产者对象 Producer
MessageProducer messageProducer = session.createProducer(queue);
// 7.创建一个textMessage对象
TextMessage textMessage = session.createTextMessage("hello activemq");
// TextMessage textMessage = new ActiveMQTextMessage();
// 8.发送消息 文本类型
messageProducer.send(textMessage);
// 9关闭资源
messageProducer.close();
session.close();
connection.close();
}
@Test
public void testConsumer() throws Exception {
// 1.创建一个连接工厂ConnectionFactory对象
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.127:61616");
// 2.需要ConnectionFactory创建一个连接对象
Connection connection = connectionFactory.createConnection();
// 3.开启连接
connection.start();
// 4.使用Connection对象创建一个session对象
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5.使用Sessiond对象创建Destination对象
Queue queue = session.createQueue("test-queue");
// 6.使用Session创建一个Consumer对象
MessageConsumer messageConsumer = session.createConsumer(queue);
// 7.向Consumer对象中设置一个MessageListener对象,用来接收消息;
messageConsumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
// 取消息的内容
if (message instanceof TextMessage) {
TextMessage textmessage = (TextMessage) message;
try {
String text = textmessage.getText();
System.out.println(text);
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
System.in.read();
messageConsumer.close();
session.close();
connection.close();
}
// ================================================================================================================
// 下面的是第二种方式 pub/sub 发布/订阅 模式
// topic
// producer
@Test
public void testTopicProducer() throws Exception {
// 1.创建一个连接工厂ConnectionFactory对象
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.127:61616");
// 2.需要ConnectionFactory创建一个连接对象
Connection connection = connectionFactory.createConnection();
// 3.开启连接
connection.start();
// 4.使用Connection对象创建一个session对象
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建Destination 应该使用Topic
Topic topic = session.createTopic("test-topic");
// 创建prodcuer
MessageProducer producer = session.createProducer(topic);
// 创建TextMessage对象
TextMessage textMessage = session.createTextMessage("hello topic");
producer.send(textMessage);
// 关闭资源
producer.close();
session.close();
connection.close();
}
@Test
public void testTopicConsumer() throws Exception {
// 1.创建一个连接工厂ConnectionFactory对象
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.127:61616");
// 2.需要ConnectionFactory创建一个连接对象
Connection connection = connectionFactory.createConnection();
// 3.开启连接
connection.start();
// 4.使用Connection对象创建一个session对象
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5.使用Sessiond对象创建Destination对象
Topic topic =session.createTopic("test-topic");
// 6.使用Session创建一个Consumer对象
MessageConsumer messageConsumer = session.createConsumer(topic);
// 7.向Consumer对象中设置一个MessageListener对象,用来接收消息;
messageConsumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
// 取消息的内容
if (message instanceof TextMessage) {
TextMessage textmessage = (TextMessage) message;
try {
String text = textmessage.getText();
System.out.println(text);
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
System.out.println("x消费者3.。。。。。。。。。。。。");
System.in.read();
messageConsumer.close();
session.close();
connection.close();
}
}