一、maven方式
1. 依賴
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.5.0</version>
</dependency>
2. 發送端
簡潔版本
package mq;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Sender {
public static void main(String[] args) throws Exception {
// 1.創建連接工廠
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
"tcp://192.168.0.119:61616");
// 2.創建連接
Connection connection = connectionFactory.createConnection();
// 3.啓動連接
connection.start();
// 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// 5.創建隊列對象
Queue queue = session.createQueue("test-queue");
// 6.創建消息生產者對象
MessageProducer producer = session.createProducer(queue);
// 7.創建消息對象(文本消息)
TextMessage textMessage = session.createTextMessage("發送點點對消息模擬第一輪測試!");
// 8.發送消息
producer.send(textMessage);
// 9.關閉資源
producer.close();
session.close();
connection.close();
}
}
測試版本
package com.gblfy.activemq.qq;
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Sender {
public static String ADDRESS = "192.168.0.119:61616";
public static String QUEUE = "test-queue";
public static String SENDMSG = "發送點點對消息模擬第一輪測試!";
public static void main(String[] args) throws Exception {
//連接工廠
ConnectionFactory connectionFactory;
//連接
Connection connection = null;
//會話 接受或者發送消息的線程
Session session = null;
//消息的目的地
Queue queue;
//消息生產者
MessageProducer messageProducer = null;
TextMessage textMessage;
try {
// 1.創建連接工廠
connectionFactory = new ActiveMQConnectionFactory(
"tcp://" + ADDRESS);
// 2.創建連接
connection = connectionFactory.createConnection();
// 3.啓動連接
connection.start();
// 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// 5.創建隊列對象
queue = session.createQueue(QUEUE);
// 6.創建消息生產者對象
messageProducer = session.createProducer(queue);
// 7.創建消息對象(文本消息)
textMessage = session.createTextMessage(SENDMSG);
// 8.發送消息
messageProducer.send(textMessage);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
// 9.關閉資源
messageProducer.close();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
}
3. 接收端
簡潔版本
package com.gblfy.activemq.qq;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Consumer {
public static void main(String[] args) throws Exception {
// 1.創建連接工廠
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
"tcp://192.168.0.119:61616");
// 2.創建連接
Connection connection = connectionFactory.createConnection();
// 3.啓動連接
connection.start();
// 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// 5.創建隊列對象
Queue queue = session.createQueue("test-queue");
// 6.創建消息消費者對象
MessageConsumer consumer = session.createConsumer(queue);
// 7.設置監聽
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("提取的消息:" + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
// 8.等待鍵盤輸入
System.in.read();
// 9.關閉資源
consumer.close();
session.close();
connection.close();
}
}
測試版本
package com.gblfy.activemq.qq;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
public class Consumer {
public static String ADDRESS = "192.168.0.119:61616";
public static String QUEUE = "test-queue";
public static void main(String[] args) throws Exception {
//連接工廠
ConnectionFactory connectionFactory;
//連接
Connection connection = null;
//會話 接受或者發送消息的線程
Session session = null;
//消息的目的地
Queue queue;
//消息生產者
MessageConsumer consumer = null;
// 1.創建連接工廠
try {
connectionFactory = new ActiveMQConnectionFactory(
"tcp://" + ADDRESS);
// 2.創建連接
connection = connectionFactory.createConnection();
// 3.啓動連接
connection.start();
// 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// 5.創建隊列對象
queue = session.createQueue(QUEUE);
// 6.創建消息消費者對象
consumer = session.createConsumer(queue);
// 7.設置監聽
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("提取的消息:" + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
// 8.等待鍵盤輸入
System.in.read();
} catch (JMSException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 9.關閉資源
consumer.close();
session.close();
connection.close();
}
}
}
4. 工具類
package com.gblfy.activemq.qq;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class MQUtil {
//連接工廠
ConnectionFactory connectionFactory;
//連接
Connection connection = null;
//會話 接受或者發送消息的線程
Session session = null;
//消息的目的地
Queue queue;
public Queue createConnectionFactory(String address, String queueName) {
try {
// 1.創建連接工廠
connectionFactory = new ActiveMQConnectionFactory(
"tcp://" + address);
// 2.創建連接
connection = connectionFactory.createConnection();
// 3.啓動連接
connection.start();
// 4.獲取session(會話對象) 參數1:是否啓動事務 參數2:消息確認方式
session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// 5.創建隊列對象
queue = session.createQueue(queueName);
} catch (JMSException e) {
e.printStackTrace();
}
return queue;
}
public void sendMsg(String address, String queueName, String message) {
MessageProducer messageProducer = null;
TextMessage textMessage;
try {
// 6.創建消息生產者對象
queue = createConnectionFactory(address, queueName);
messageProducer = session.createProducer(queue);
// 7.創建消息對象(文本消息)
textMessage = session.createTextMessage(message);
// 8.發送消息
messageProducer.send(textMessage);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
// 9.關閉資源
messageProducer.close();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
public void recMsg(String address, String queueName) {
//消息生產者
MessageConsumer consumer = null;
try {
// 6.創建消息消費者對象
queue = createConnectionFactory(address, queueName);
consumer = session.createConsumer(queue);
// 7.設置監聽
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("提取的消息:" + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
// 8.等待鍵盤輸入
System.in.read();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (connection != null) {
try {
// 9.關閉資源
consumer.close();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
String ADDRESS = "192.168.0.119:61616";
String QUEUE = "test-queue";
String SENDMSG = "發送點點對消息模擬第一輪測試!";
MQUtil mqUtil = new MQUtil();
mqUtil.sendMsg(ADDRESS, QUEUE, SENDMSG);
mqUtil.recMsg(ADDRESS, QUEUE);
}
}
二、引入jar方式
2.1.下載jar
建議用maven座標先把需要的jar下載到本地倉庫,再把本地倉庫中的jar複製到工程的lib文件夾下面
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.5.0</version>
</dependency>
如果出現SLF4J:Failed to load class org.slf4j.impl.StaticLoggerBinder
請跳轉https://gblfy.blog.csdn.net/article/details/107018564
2.2. 按需導入
三、添加賬號密碼
源碼分析:
public ActiveMQConnectionFactory(String userName, String password, String brokerURL) {
setUserName(userName);
setPassword(password);
setBrokerURL(brokerURL);
}
從源碼看出在創建連接工廠的時候,在添加賬號面的參數即可,注意參數順序。
例如:
//連接用戶名
private static final String USERNAME = "admin";
//連接密碼
private static final String PASSWORD = "admin";
//連接地址
private static final String BROKEURL = "10.5.6.19:61616";
connectionFactory = new ActiveMQConnectionFactory(
USERNAME,"tcp://" + BROKEURL,PASSWORD);