上篇文章我们介绍了广播/收听的消息模式,本篇文章我们来介绍消息的持久化.
持久化
什么是持久化?就是把数据存储到磁盘,关机之后,重启,数据还在.
实现的思路
1.创建一个连接
2.创建一个队列
3.向这个队列发送一个持久化的消息,一条非持久化的消息
4.关闭进程
5.启动监听程序,看收到的消息是那一条?还是都能收到?拭目以待
一个简单的实例
先写发送消息的代码
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost")
Connection connection = factory.createConnection()
connection.start()
Queue queue = new ActiveMQQueue("testQueue")
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE)
MessageProducer producer = session.createProducer(queue)
producer.setDeliveryMode(DeliveryMode.PERSISTENT)
producer.send(session.createTextMessage("A persistent Message"))
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT)
producer.send(session.createTextMessage("A non persistent Message"))
System.out.println("Send messages sucessfully!")
再来写消息监听的代码
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
Connection connection = factory.createConnection();
connection.start();
Queue queue = new ActiveMQQueue("testQueue");
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer comsumer = session.createConsumer(queue);
comsumer.setMessageListener(new MessageListener() {
public void onMessage(Message m) {
try {
System.out.println("Consumer get " + ((TextMessage) m).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
我们来运行一下,看结果知道:有一条消息被持久化了,未丢失,有一条消息丢失了.
下一篇我们介绍:一个稍微一点儿复杂的应用场景