本文主要是介绍JMSMQ,从入门到精通(四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上篇文章我们介绍了广播/收听的消息模式,本篇文章我们来介绍消息的持久化.
持久化
什么是持久化?就是把数据存储到磁盘,关机之后,重启,数据还在.
实现的思路
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();}}
});
我们来运行一下,看结果知道:有一条消息被持久化了,未丢失,有一条消息丢失了.
下一篇我们介绍:一个稍微一点儿复杂的应用场景
这篇关于JMSMQ,从入门到精通(四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!