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

}


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