ActiveMQ 提供了一种名为“消息持久化”的机制来解决待定消息的问题。在消息持久化的机制中,消息发送者将消息发送到目的地(Destination),ActiveMQ 会将消息保存在磁盘上,直到消息被确认消费为止。这就保证了即使 ActiveMQ 服务重启或者崩溃的情况下,待定消息也不会丢失。
示例代码:
// 连接 ActiveMQ 服务 String url = "tcp://localhost:61616"; Connection connection = new ActiveMQConnectionFactory(url).createConnection();
// 创建持久化订阅 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = session.createTopic("my.topic"); MessageConsumer consumer = session.createDurableSubscriber(topic, "my-subscription");
// 发送消息 MessageProducer producer = session.createProducer(topic); Message message = session.createTextMessage("Hello, World!"); producer.send(message);
// 关闭连接 connection.close();