消息应答:

 消息应答默认是打开的(false)

 boolean autoAck = true;自动确认模式,表示一旦MQ将消息给到消费者,就会从内存中删除该条消息,这种情况下,如果杀死正在执行的消费者,那么就会丢失正在处理的消息(也就是数据丢失)

 boolean autoAck = false;手动确认模式,表示MQ将消息分发给消费者后并不会及时的删除存储在内存中的消息,而是在接收到消费者的回执后才会从内存中删除相应的消息,这样就保证了数据不会在有一个消费者挂掉,那么分配给该消费者的消息就会丢失的现象。

  由于消息是存储在内存中的,这个时候如果MQ挂掉,那么所有的消息都会从内存中被清除掉,为了确保数据的持久化,我们在声明队列信息的时候,就需要对durable进行设置。

/*这个是Channel.class中的声明队列的方法,这个方法的第二个参数 durable 就是声明数据持久化的标志  false是非持久化  true是持久化*/
Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete,Map<String, Object> arguments) throws IOException;
// 声明队列
channel.queueDeclare(QUEUE_NAME, true, false, false, null);

  注意:如果一个队列一旦被声明,那么该队列中的任何参数将不会在被改变,也就是是RabbitMQ是不允许被声明过的队列被重新定义不同的参数,如果非要进行此操作,那么通过MQ的服务器(http://localhost:15672/#/queues)删除已经被声明过的队列信息,然后即可进行当前重新定义的操作。或者重新给队列分配一个新的名称QUEUE_NAME也可以完成该操作。

RabbitMQ简单应用の消息持久化的更多相关文章

  1. RabbitMQ 队列、消息持久化

    RabbitMQ的消息队列的持久化是一个很不错的功能,设置也非常简单.如下代码: 1.设置队列持久化(在声明队列的时候设置) channel.QueueDeclare(queue: "q.l ...

  2. RabbitMQ 简单的消息发送与接收

    RabbitMQ是建立在AMQP(Advanced Message Queuing Protocol,高级消息队列协议)基础上的,而AMQP是建立在TCP协议之上的. 因此,RabbitMQ是需要建立 ...

  3. RabbitMQ入门_13_消息持久化

    参考资料:https://www.rabbitmq.com/tutorials/tutorial-two-java.html 默认情况下,队列中的消息是不持久化的.如果 RabbitMQ 崩溃,队列中 ...

  4. Rabbitmq实现负载均衡与消息持久化

      Rabbitmq 是对AMQP协议的一种实现.使用范围也比较广泛,主要用于消息异步通讯. 一,默认情况下Rabbitmq使用轮询(round-robin)方式转发消息.为了较好实现负载,可以在消息 ...

  5. python---RabbitMQ(1)简单队列使用,消息依次分发(一对一),消息持久化处理

    MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间 ...

  6. RabbitMQ之消息持久化(转)

    原文地址 https://blog.csdn.net/u013256816/article/details/60875666/ 消息的可靠性是RabbitMQ的一大特色,那么RabbitMQ是如何保证 ...

  7. 【python】-- RabbitMQ 队列消息持久化、消息公平分发

    RabbitMQ 队列消息持久化 假如消息队列test里面还有消息等待消费者(consumers)去接收,但是这个时候服务器端宕机了,这个时候消息是否还在? 1.队列消息非持久化 服务端(produc ...

  8. RabbitMQ之消息持久化

    消息的可靠性是RabbitMQ的一大特色,那么RabbitMQ是如何保证消息可靠性的呢——消息持久化. 为了保证RabbitMQ在退出或者crash等异常情况下数据没有丢失,需要将queue,exch ...

  9. 轻松搞定RabbitMQ(三)——消息应答与消息持久化

    转自 http://blog.csdn.net/xiaoxian8023/article/details/48710653 这个官网的第二个例子中的消息应答和消息持久化部分.我把它摘出来作为单独的一块 ...

随机推荐

  1. SSH框架调用scrapy爬虫

    毕设刚答辩完毕,不用担心查重了,所以补一篇毕设的内容. 毕设是图片搜索网站,使用python爬虫获取图片资源,再由javaweb管理使用图片的信息和图片,大部分实现起来十分简单,也不好意思炫耀.但是有 ...

  2. (线段判交的一些注意。。。)nyoj 1016-德莱联盟

    1016-德莱联盟 内存限制:64MB 时间限制:1000ms 特判: No通过数:9 提交数:9 难度:1 题目描述: 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们 ...

  3. C# 实现身份验证之WCF篇(1)

    WCF身份验证一般常见的方式有:自定义用户名及密码验证.X509证书验证.ASP.NET成员资格(membership)验证.SOAP Header验证.Windows集成验证.WCF身份验证服务(A ...

  4. qml: 自定义滚动条;

    注:  该博文为原创博文,转载请注明,摘用请随意: qml自带的滚动条不太好用: 首先,利用canvas绘制滚动条两端的箭头: import QtQuick 2.0 Canvas { width: 2 ...

  5. ADC触摸屏

    目录 ADC触摸屏 硬件原理 等效电路 测量逻辑 程序设计(一)获得ADC 寄存器初始化 中断初始化 ADC模式(中断.测量) 中断函数 程序设计(二)获得坐标 生产者与消费者 ADC获取 程序优化 ...

  6. JDK动态代理和CGLIB代理的区别

    一.原理区别: java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 而cglib动态代理是利用asm开源包,对代理对象类的class文件 ...

  7. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)

    我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕.本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的 ...

  8. JAVA核心技术I---JAVA基础知识

    一:class类 (一)文件规则 1.Java文件必须以.java作为扩展名 2.一个Java文件只能有一个public class 3.public class的名字必须和文件名字一样,大小写都要完 ...

  9. Nginx记录-Nginx基础(转载)

    1.Nginx常用功能 1.Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理. Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能.Nginx可以根据不同的 ...

  10. bzoj千题计划318:bzoj1396: 识别子串(后缀自动机 + 线段树)

    https://www.lydsy.com/JudgeOnline/problem.php?id=1396 后缀自动机的parent树上,如果不是叶子节点,那么至少有两个子节点 而一个状态所代表子串的 ...