依賴包,最好跟你安裝的ActiveMQ版本相同
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.10</version>
</dependency>
生產者代碼
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class JMSProducerPersistent {
private final static String DEFAULT_BROKER_HOST = "tcp://192.168.253.132:61616";
private final static String USER_NAME = "admin";
private final static String PASSWORD = "admin";
private final static String TOPIC_NAME = "topic_one";
public static void main(String[] args) throws JMSException {
// 創建鏈接工廠
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(USER_NAME, PASSWORD, DEFAULT_BROKER_HOST);
// 通過鏈接工廠獲得connection並啓動
Connection connection = activeMQConnectionFactory.createConnection();
//創建會話session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//創建目的地,是隊列還是主題
Topic topic = session.createTopic(TOPIC_NAME);
// 創建生產者
MessageProducer producer = session.createProducer(topic);
// 設置持久化
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
// 啓動鏈接
connection.start();
//循環發送5條消息
for (int i = 0; i < 5; i++) {
//創建消息
TextMessage textMessage = session.createTextMessage("Hello ActiveMQ" + i);
// 發送消息
producer.send(textMessage);
}
// 關閉鏈接
producer.close();
session.close();
connection.close();
}
}
消費者代碼
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
public class JMSConsumerPersistent {
private final static String DEFAULT_BROKER_HOST = "tcp://192.168.253.132:61616";
private final static String USER_NAME = "admin";
private final static String PASSWORD = "admin";
private final static String TOPIC_NAME = "topic_one";
public static void main(String[] args) throws JMSException, IOException {
System.out.println("subscriberOne");
// 創建鏈接工廠
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(USER_NAME, PASSWORD, DEFAULT_BROKER_HOST);
// 通過鏈接工廠獲得connection
Connection connection = activeMQConnectionFactory.createConnection();
connection.setClientID("subscriberOne");
//創建會話session
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//創建目的地,是隊列還是主題
Topic topic = session.createTopic(TOPIC_NAME);
//創建主題訂閱者
TopicSubscriber durableSubscriber = session.createDurableSubscriber(topic, "hello");
// 啓動鏈接
connection.start();
durableSubscriber.setMessageListener(message -> {
if (message instanceof TextMessage) {
TextMessage receive = (TextMessage) message;
try {
System.out.println("receive.getText() --> " + receive.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
System.in.read();
//關閉鏈接
session.close();
connection.close();
}
}