JMS&MQ,从入门到精通(四)

来源:互联网 发布:mysql的sequence 编辑:程序博客网 时间:2024/06/06 03:44
上篇文章我们介绍了广播/收听的消息模式,本篇文章我们来介绍消息的持久化.

持久化

什么是持久化?就是把数据存储到磁盘,关机之后,重启,数据还在.

实现的思路

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();        }    }});
我们来运行一下,看结果知道:有一条消息被持久化了,未丢失,有一条消息丢失了.

这里写图片描述

下一篇我们介绍:一个稍微一点儿复杂的应用场景
0 0
原创粉丝点击