ActiveMQ的安装
0、准备:进入http://activemq.apache.org/下载ActiveMQ
使用的版本是5.12.0
一、安装环境:
- 需要jdk
- 安装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();
}
}