可以使用ActiveMQ的持久化功能,将消息存储在磁盘上,以便在重启后重新加载它们。以下是一个示例:
ConnectionFactory factory = new ActiveMQConnectionFactory(url); ((ActiveMQConnectionFactory)factory).setPersistenceEnabled(true);
producer.setDeliveryMode(DeliveryMode.PERSISTENT); producer.send(message);
Connection connection = factory.createConnection(); connection.setClientID("my-client-id"); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = session.createTopic("my-topic"); MessageConsumer consumer = session.createDurableSubscriber(topic, "my-subscription"); connection.start();
这样,即使ActiveMQ重新启动,消费者也可以自动重新订阅并恢复队列。