Linux下ActiveMQ的搭建与使用

ActiveMQ的安装

0、准备:进入http://activemq.apache.org/下载ActiveMQ

使用的版本是5.12.0

一、安装环境:

  1. 需要jdk
  2. 安装Linux系统。生产环境都是Linux系统。

二、安装步骤

第一步: 把ActiveMQ 的压缩包上传到Linux系统。

[root@localhost ~]# ll
总用量 190600
drwxr-xr-x. 10 root root      4096 8月  10 2015 apache-activemq-5.12.0
-rw-r--r--.  1 root root  46560868 9月  13 02:13 apache-activemq-5.12.0-bin.tar.gz
drwxr-xr-x.  9 root root      4096 9月  10 08:06 apache-tomcat-7.0.47
-rw-r--r--.  1 root root   8234674 9月  10 08:05 apache-tomcat-7.0.47.tar.gz
drwxr-xr-x.  8 uucp  143      4096 3月  18 2014 jdk1.7.0_55
-rw-r--r--.  1 root root 139463702 9月  13 02:17 jdk-7u55-linux-i586.tar.gz
第二步:解压缩。

[root@localhost ~]# tar -zxvf apache-activemq-5.12.0-bin.tar.gz

第三步:启动。

使用bin目录下的activemq命令启动:

[root@localhost bin]# pwd
/root/apache-activemq-5.12.0/bin

[root@localhost bin]# ll
总用量 152
-rwxr-xr-x. 1 root root 21748 8月  10 2015 activemq
-rwxr-xr-x. 1 root root  6189 8月  10 2015 activemq-diag
-rw-r--r--. 1 root root 15958 8月  10 2015 activemq.jar
-rw-r--r--. 1 root root  4881 8月  10 2015 env
drwxr-xr-x. 2 root root  4096 9月  13 02:14 linux-x86-32
drwxr-xr-x. 2 root root  4096 9月  13 02:14 linux-x86-64
drwxr-xr-x. 2 root root  4096 9月  13 02:14 macosx
-rwxr-xr-x. 1 root root 83820 8月  10 2015 wrapper.jar
[root@localhost bin]# ./activemq start

关闭activemq

[root@localhost bin]# ./activemq stop

查看activemq启动状态:

[root@localhost bin]# ./activemq status

注意:如果ActiveMQ整合spring使用不要使用activemq-all-5.12.0.jar包。建议使用5.11.2

三、进入管理后台:

http://192.168.25.129:8161/admin/                      用户名:admin           密码:admin

四、ActiveMQ的使用

添加依赖:

<!-- activemq -->
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.12.0</version>
</dependency>

测试案例:

package com.e3mall.activemq;

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.junit.Test;

public class ActiveMqTest {
	/**
	 * 
	 * @Description: 点到点形式发送消息
	 * @author WSC
	 * @date 2019年9月25日
	 * @throws Exception
	 *             void
	 */
	@Test
	public void testQueueProducer() throws Exception {
		// 1、创建一个连接工厂对象ConnectionFactory,需要设置服务的ip和端口
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616");
		// 2、使用工厂对象创建一个Connection对象
		Connection connection = connectionFactory.createConnection();
		// 3、开启连接,调用Connection的start()方法
		connection.start();
		// 4、使用Connection对象创建一个会话Session对象
		// 第一个参数:是否开启事务。如果为true:开启事务,第二个参数无意义。如果为false:关闭事务,一般不开启事务
		// 第二个参数:会话应答模式。自动应答:Session.AUTO_ACKNOWLEDGE和手动应答:Session.CLIENT_ACKNOWLEDGE。一般为自动应答
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		// 5、使用session对象创建一个Destination对象。两种形式:Queue和Topic,现在使用queue
		Queue queue = session.createQueue("testQueue01");
		// 6、使用session对象创建一个Producer对象
		MessageProducer messageProducer = session.createProducer(queue);
		// 7、创建一个Message对象,可以使用TextMessage
		/*
		 * TextMessage textMessage = new ActiveMQTextMessage();
		 * textMessage.setText("Hello My First Queue");
		 */
		TextMessage textMessage = session.createTextMessage("testQueue");
		// 8、发送消息
		messageProducer.send(textMessage);
		/// 9、关闭资源
		messageProducer.close();
		session.close();
		connection.close();
	}

	@Test
	public void testQueueConsumer() throws Exception {
		// 1、创建一个连接工厂ConnectionFactory,需要制定ip和port
		ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616");
		// 2、创建一个Connection对象
		Connection connection = connectionFactory.createConnection();
		// 3、开启连接,调用Connection的start()方法开启
		connection.start();
		// 4、使用connection对象创建一个Session对象
		// 第一个参数:是否开启事务。如果为true开启事务,第二个参数无意义。如果为false关闭事务;一般为false
		// 第二个参数:会话应答模式。自动应答Session.AUTO_ACKNOWLEDGE和手动应答Session.CLIENT_ACKNOWLEDGE。一般为自动应答
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		// 5、创建一个Queue
		Queue queue = session.createQueue("testQueue01");
		// 6、创建以个Consumer
		MessageConsumer consumer = session.createConsumer(queue);
		// 7、接收消息
		consumer.setMessageListener(new MessageListener() {

			@Override
			public void onMessage(Message arg0) {
				TextMessage message = (TextMessage) arg0;
				// 8、处理结果
				try {
					System.out.println(message.getText());
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
		});
		// 等待接收消息
		System.in.read();
		// 9、关闭资源
		consumer.close();
		session.close();
		connection.close();
	}

	@Test
	public void testTopicProducer() throws Exception {
		// 1、创建ConnectionFactory工厂,需要制定ip和端口号
		ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616");
		// 2、创建Connection对象
		Connection connection = factory.createConnection();
		// 3、开启连接
		connection.start();
		// 4、使用Connection对象创建一个会话Session
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		// 5、创建一个Topic对象
		Topic topic = session.createTopic("testTopic01");
		// 6、使用session对象创建一个Producer
		MessageProducer producer = session.createProducer(topic);
		// 7、创建消息对象
		TextMessage message = session.createTextMessage("testTopic Message");
		// 8、发送消息
		producer.send(message);
		// 9、关闭资源
		producer.close();
		session.close();
		connection.close();
	}

	@Test
	public void testTopicConsumer() throws Exception {
		ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://192.168.25.129:61616");
		Connection connection = factory.createConnection();
		connection.start();
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		Topic topic = session.createTopic("testTopic01");
		MessageConsumer consumer = session.createConsumer(topic);
		consumer.setMessageListener(new MessageListener() {
			@Override
			public void onMessage(Message message) {
				TextMessage textMessage = (TextMessage) message;
				try {
					System.out.println(textMessage.getText());
				} catch (JMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		System.out.println("topic3消费者启动了。。。。");
		System.in.read();

		consumer.close();
		session.close();
		connection.close();
	}

}

 

 

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