linux下消息中間件ActiveMQ的入門筆記一

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

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章