张相逢的博客

程序猿说:每天不进步,就是退步。

JMS&MQ,从入门到精通(四)
上篇文章我们介绍了广播/收听的消息模式,本篇文章我们来介绍消息的持久化.

持久化

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

实现的思路

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

这里写图片描述

下一篇我们介绍:一个稍微一点儿复杂的应用场景
阅读更多
版权声明:本文为博主张相逢原创文章,未经本人允许不得转载。违者必究!!! https://blog.csdn.net/u013410747/article/details/70895378
个人分类: jms-mq
所属专栏: JMS&MQ,从入门到精通
想对作者说点什么? 我来说一句

入门精通C++的四本经典书籍

2018年04月25日 128.43MB 下载

JavaScript从入门精通

2006年01月11日 18.05MB 下载

java从入门精通光盘资料

2016年05月16日 69MB 下载

C#从入门精通中文(PDF)

2013年09月05日 33.89MB 下载

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭