這是本人的學習筆記 如果你看到這個筆記 如果有什麼問題 可以留言一起學習
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();
}
}