依赖包,最好跟你安装的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();
}
}