1、先下載安裝運行
地址:http://activemq.apache.org/download-archives.html
選擇一個版本 根據自己電腦上jdk版本 apache-activemq-5.15.0以後的是1.8以上版本
在壓縮後的文件的bin目錄下找對應自己的系統的文件 運行bat
一般運行之後出現界面會像下面這樣,如果出現系統找不到指定文件 jvm什麼的 要麼jdk沒裝 要麼版本不匹配需要低一點的activemq或者高版本的jdk
運行http://localhost:8161出現界面如下
點擊鏈接登錄 會輸入密碼 初始用戶名和密碼 都是admin (可以改登錄的用戶名和密碼,在conf文件夾activemq.xml裏配置)
運作成功
2、使用
具體使用涉及到兩個概念 生產者和消費者
最開始點擊頁面queues和Topics兩個下面是空的
引入jar包
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.14.3</version>
</dependency>
創建一個生產者類(注意引入的包不要錯了)
package com.example.Test;
import javax.jms.*;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Producter {
//默認連接用戶名
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
//默認連接密碼
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
//默認連接地址
private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL;
public static void main(String[] args) {
//連接工廠
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
try {
//連接
Connection connection = connectionFactory.createConnection();
//啓動連接
connection.start();
//創建session
Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//消息目的地
Destination destination = session.createQueue("hello");
//消息生產者
MessageProducer producer = session.createProducer(destination);
//設置不持久化,此處學習,實際根據項目決定
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//發送消息
for (int i = 0; i < 10; i++) {
//創建一條文本消息
TextMessage message = session.createTextMessage("ActiveMQ:這是第 " + i + " 條消息");
//生產者發送消息
producer.send(message);
}
session.commit();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
創建一個消費者類(這裏的包也一樣 不要引錯)
package com.example.Test;
import javax.jms.*;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Comsumer {
//默認連接用戶名
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
//默認連接密碼
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
//默認連接地址
private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL;
public static void main(String[] args) {
//連接工廠
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
try {
//連接
Connection connection = connectionFactory.createConnection();
//啓動連接
connection.start();
//創建session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//消息目的地
Destination destination = session.createQueue("hello");
//消息消費者
MessageConsumer consumer = session.createConsumer(destination);
while (true) {
TextMessage message = (TextMessage) consumer.receive();
if (message != null) {
System.out.println("接收到消息: " + message.getText());
} else {
break;
}
}
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
先運行生產者 查看頁面Queues下面列表出現信息 Topics會有具體消費情況
Number Of Pending Messages :等待消費的消息,這個是當前未出隊列的數量;
Number Of Consumers 消費者的數量;
Messages Enqueued 進入隊列的消息(activeMQ 重啓後會清零)
Messages Dequeued 出了隊列的消息(qctiveMQ 重啓後會清零)