首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Akka(15): 持久化模式:AtLeastOnceDelivery-消息保证送达模式

消息保证送达是指消息发送方保证在任何情况下都会至少一次确定的消息送达。...既然涉及到消息的补发,就不可避免地影响发送方和接收方之间消息传递的顺序、接收方重复收到相同的消息等问题,这些用户必须加以关注。...AtleastOnceDelivery模式既然需要保证消息必达,就必须保证自身在出现任何异常情况下都能恢复到原来的状态,这些都可通过状态持久化来实现。...系统对超过配置文件中重发次数设置的消息通过自发送一条UnconformedWarning信息,这个信息包嵌了当前未确认送达消息清单: /** * @see [[AtLeastOnceDeliveryLike...从这个例子比较简单的功能操作中我们可明显感觉到写入日志的流量:CalcAggregator好像就是在不断的把经历的指令写入日志然后等待回复,回复时间就是Calculator运算时间。

1.5K50

ActiveMQ 中的消息持久化 原

(1)KahaDB主要特性 1、日志形式存储消息; 2、消息索引以B-Tree结构存储,可以快速更新; 3、完全支持JMS事务; 4、支持多种恢复机制; (2)KahaDB的结构 消息存储在基于文件的数据日志中...如果消息发送成功,变标记为可删除的。 系统会周期性的清除或者归档日志文件。 消息文件的位置索引存储在内存中,这样能快速定位到。...Data logs: Data logs用于存储消息日志,消息的全部内容都在Data logs中。 同AMQ一样,一个Data logs文件大小超过规定的最大值,会新建一个文件。...Metadata store 在db.data文件中保存消息日志中消息的元数据,也是以B-Tree结构存储的,定时从Metadata cache更新数据。...Metadata store中也会备份一些在消息日志中存在的信息,这样可以让Broker实例快速启动。 即便metadata store文件被破坏或者误删除了。

79630
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JMS消息持久化,将ActiveMQ消息持久化到mySql数据库中

    前言 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。...fr=aladdin ActiveMQ提供多种数据持久化方式:可以持久化到文件,也可以持久化到数据库,其中数据库可以支持MySQL和Oracle两种类型。...默认提供的是持久化到文件的方式,即activemq.xml文件中的: <kahaDBdirectory="${activemq.base}/data/kahadb...步骤 本文重点接收的是持久化到MySQL中的配置方式: 2.1    添加MySQL驱动 首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是: mysql-connector-java...此时,重新启动MQ,就会发现activemq库中多了三张表:activemq_acks,activemq_lock,activemq_msgs,OK,说明已经持久化成功啦!

    1.7K70

    RabbitMQ中的消息持久化是如何实现的?

    RabbitMQ中的消息持久化是如何实现的? RabbitMQ中的消息持久化是通过将消息存储到磁盘上的持久化队列来实现的。...在RabbitMQ中,消息的持久化是为了确保即使在RabbitMQ服务器重启或崩溃的情况下,消息也不会丢失。 在下面的代码案例中,我们将演示如何在Java中使用RabbitMQ实现消息的持久化。...然后,我们可以通过调用basicPublish方法来发送消息。在发送消息时,我们需要设置消息的deliveryMode属性为2,表示该消息是持久化的。...接下来,我们可以通过消费者来接收消息。在消费者中,我们需要设置autoAck参数为false,表示手动确认消息的接收。...这样做可以确保消息在被消费者接收后不会被立即删除。 通过以上步骤,我们就可以实现RabbitMQ中消息的持久化。即使在RabbitMQ服务器重启或崩溃的情况下,消息也能够被恢复并重新分发给消费者。

    5300

    kafka的消息持久化文件

    kafka内部对消息持久化存储时,也遵循类似的理念,按批次存储,同时记录消息的偏移位置,以及消息的时间戳等信息。...这三个文件均以文件中存储的首个消息在分区中的偏移量作为文件名的前缀。 接下来就分别讲述下这几个文件的具体格式。 1) *.log log文件中的内容就是一个segment中实际包含的消息。...在头部信息中存储了基准偏移(BaseOffset),即该批次中的第一条消息在整个分区中的偏移位置;长度(Length);分区leader的epoch(LeaderEpoch);用于指定消息存储格式的魔数...生产者可以配置设置时间戳的类型,默认为创建时间(另外一个可选值是日志追加时间,即写入的时间) 该文件记录了不同时间戳对应的消息的偏移。...文件格式和index一样,由多个条目组成,每个条目为固定8字节的时间戳加固定4字节的偏移量构成。这里就不再实际举例说明了。 小结一下,本文主要分析了kafka消息的持久化文件,以及具体的文件格式。

    37640

    RabbitMQ的消息持久化处理

    1、RabbitMQ的消息持久化处理,消息的可靠性是 RabbitMQ 的一大特色,那么 RabbitMQ 是如何保证消息可靠性的呢——消息持久化。 2、autoDelete属性的理解。   ...Info级别的日志进行消息的持久化操作,即队列不进行自动删除。将autoDelete = "false"即可。...; 51 } 52 53 } Error级别的日志进行消息的持久化操作,即队列进行自动删除。...RabbitMQ的消息持久化处理,Ready是对未接收到的数据状态表示,如果RabbitMQ在队列里面存放的消息未被消费者所消费,那么会给未消费的消息加一个标记,表示当前这个消息未被消费。...当消费者停止以后,生产者生产的消息存储在RabbitMQ的服务器内存中,队列也存在内存中,数据在队列中,即数据保存在内存中。

    1.8K10

    清除mysql的log-bin日志

    原来mysql-bin.000001、mysql-bin.000002等文件是数据库的操作日志,例如UPDATE一个表,或者DELETE一些数据,即使该语句没有匹配的数据,这个命令也会存储到日志文件中,...2、主从服务器之间同步数据主服务器上所有的操作都在记录日志中,从服务器可以根据该日志来进行,以确保两个同步。...3、清除办法运行 /usr/local/mysql/bin/mysql -u root -p 登录执行:reset master;如果你只有一个mysql服务器,在/etc/ 下面找到my.cnf文件vim.../etc/my.cnf把里面的#log-bin=mysql-bin #binlog_format=mixed 这两行注释掉,然后将mysql下的var目录中的这些日志文件全部删除,重启mysql服务即可...C:在所有的从属服务器中判定最早的日志,这个是目标日志,如果所有的从属服务器是更新的,就是清单上的最后一个日志。D:清理所有的日志,但是不包括目标日志,因为从服务器还要跟它同步。

    1K30

    Akka(1):Actor - 靠消息驱动的运算器

    Akka的这些鲜明的特点都是通过消息驱动来实现的。 曾经看到一个关于Actor模式的观点:认为Actor并不适合并发(concurrency)编程,更应该是维护内部状态的运算工具。...从这个案例中我的结论是尽量把Akka Actor使用在需要维护内部状态的应用中。如果为了实现non-blocking只需要把程序分布到不同的线程里运行的话就应该直接用Future,这样自然的多。...Actor从外部接收的消息都是先存放在Mailbox里的。系统默认Mailbox中无限数量的消息是按时间顺序排列的,但用户可以按照具体需要定制Mailbox,比如有限容量信箱、按消息优先排序信箱等。...3、Behavior:简单来说就是对Mailbox里消息的反应方式。Mailbox中临时存放了从外界传来的指令,如何运算这些指令、产生什么结果都是由这些指令的运算函数来确定。...按照Akka程序标准格式,我们先把每个Actor所需要处理的消息和Props构建放在它的伴生对象里: object Wallet { sealed trait WalletMsg case

    64560

    清除过期日志的py脚本

    本篇和大家分享的是一个清除过期日志的python脚本,年后第二篇希望对大家有帮助; 该python脚本创建的由来 代码及分析 crontab定时任务 该python脚本创建的由来 此由来,是在过年假期时突然被反馈告警服务器磁盘空间占用比例增大...,当时通过df等命令定位到,是使用了某个开源任务调度框架日志增大并之前很多历史日志没有自动删除导致的; 因此,查看该框架的文档是否有自动清除配置,暂时没有找到自动清除日志的配置说明,于是乎浏览源码就是log4...来记录的,本来打算扩展重写下log4让其具有自动清除日志的功能,但是想到以后可能还有其他项目的日志无法自动清除,于是乎有了本篇分享的python产出,仅仅配置下检测路径即可删除自定义n天之前的日志 代码及分析...数组中的日志所在磁盘路径下面的日志文件 获取待删除的文件,这些文件以.log后缀结尾,并且通过时间限定策略【当前时间+(-n天) > 文本日志创建时间】来识别哪些到期该删除了 最后通过执行rm -rf命令直接删除符合时间策略的日志文件...crontab定时任务 上面只有了清除日志的py脚本,但是要定时执行该脚本才能到达自动的目的,不然每次都手动运行py脚本和直接手动删除日志文件没上面太大的区别和省时间,因此这里用到了crontab任务

    57920

    Akka 指南 之「持久化」

    当一个持久性 Actor 启动或重新启动时,日志消息将重播给该 Actor,以便它可以从这些消息中恢复其状态。...AsyncWriteJournal:日志存储发送给持久性 Actor 的消息序列。应用程序可以控制哪些消息是日志记录的,哪些消息是由持久性 Actor 接收的,而不进行日志记录。...警告:如果你使用「持久性查询」,查询结果可能会丢失日志中已删除的消息,这取决于日志插件中如何实现删除。...消息删除不会影响日志的最高序列号,即使在调用deleteMessages之后从日志中删除了所有消息。 持久化状态处理 持久化、删除和重放消息可以成功,也可以失败。...LevelDB 的一个特点是,删除操作不会从日志中删除消息,而是为每个已删除的消息添加一个“逻辑删除”。

    3.5K30

    Golang实现的持久化消息队列-OPQ

    一、OPQ是什么 An Open sourced Persistent message Queue 一款开源的持久化消息队列 基于go 1.4.2实现 功能 消息持久化 采用推送模式 易用,无需集成客户端.../OPQ &>/dev/null & 参数说明: -debug 当debug=yes时,服务运行在debug模式,主要用于log/output -port 监听端口,默认8999 -syslog 系统日志...并发获取任务队列里的任务进行处理(主要是数据序列化),然后通知record service进行持久化操作 record service record service负责数据在持久化过程中的串行写入,根据消息所属...topic,分别更新对应路径下的文件:索引(.idx,文件按固定数目进行切分,N为切分区间最小的消息序号),消息(.msg),总数(cmd) deliverer(s) 从dlv文件获取需要发送的消息起始序号...M,根据M从索引文件查找比该消息更早的最近一条消息的索引信息S,根据S从消息文件查找到序号M的消息内容,依次顺序发送后面的消息到对应目标地址,同时更新已发送序号到dlv文件 代码结构: 1532608726

    2.5K50

    SQL Server 数据库清除日志的方法

    清除sqlserver2005日志 有时候当系统运行时间比较长的时候,我们把备份的数据库还原的时候发现,数据库中数据文件和日志文件变的好大,特别是日志文件。...现在给大家介绍如何清理SQLServer数据库日志;有两种方法如下: 方法一:手动清除sqlserver2005日志 1.右键在清除日志的数据库,如“TestDB”,点击[新建查询(Q)] 2...收缩文件”对话框中,将“文件类型(T)”选为“日志”,将“收缩操作”选中“在释放未使用的空间前重新组织页(O)” 6.在“将文件收缩到(K)”文本框中输入后面提示的最小大小的数值,点击[确定]即可。...方法二:用工具软件SqlServer日志清除专家3.0,可对Sql Server 6.5到Sql Server 2005的各种版本的数据库日志的清除;其使用方法非常简单;SqlServer 日志清除专家绿色版...,数据也不会丢失;方法二操作比较方便,可以把数据库中的日志文件清理到1M大小;

    4.7K50

    MySQL8.0.21——错误日志中的组复制系统消息

    作者:Nuno Carvalho 译:徐轶韬 利用组复制,用户可以通过将系统状态复制到一组服务器来创建具有冗余的容错系统。即使某些服务器发生故障,只要不是所有服务器或大多数服务器,系统仍然可用。...为了使DBA能够在组的生存期内对主要事件进行后期观察,需要完整记录这些事件。在8.0.21之前,用户可以通过增加的错误日志的详细程度来指示服务器执行此操作。现在有一种更简单的方法。...在MySQL 8.0.21上,我们针对组复制日志消息进行了全新的处理,目标是: MySQL DBA必须能够通过服务器的错误日志来观察组的主要事件,而不管错误日志的详细程度如何。...为此,我们将与组复制相关的日志消息重新分类为系统消息。系统会始终记录该类别消息,而与服务器日志级别无关。...改进的最好之处在于,DBA /操作员无需进行任何配置更改。 结论 遵循我们不断改进的传统,通过使用相同的服务器默认值,我们再次简化了组复制的使用。

    1.1K40

    聊聊Akka

    在一个系统中,数据的来源非常广,比如用户交易数据、历史记录、系统日志等,当数据积累到一定程度后(变成Big Data),我们就得考虑挖掘其价值。...持久化:Actor携带的状态或消息可以被持久化,以便于在JVM崩溃后能恢复状态。 轻量级:每个Actor大约只占300bytes,即1G内存可容纳接近300万个Actor。...使用场景包括: 服务后端,比如rest web,websocket服务,分布式消息处理等。 并发&并行,比如日志异步处理,密集数据计算等。 总之,对高并发和密集计算的系统,Akka都是适用的!...当程序出错, JVM崩溃时,任何关键状态的丢失,对我们后续的业务来讲都可能是致命的打击,所以状态数据的持久化变得非常重要。Akka提供了Actor状态的持久化方案,以便我们在必要时恢复数据。...下面是Akka中两个具有代表性的开源项目: Play框架 一款大名鼎鼎的Web开发框架。

    2.2K30

    面向消息的持久通信与面向流的通信

    一、面向消息的持久通信   消息队列系统为持久异步通信提供多种支持,本质是提供消息的中介存储能力,这样就不需要消息发送方和接收方在消息传输过程中都保持激活状态。...消息队列模型   应用程序可以通过在特定队列中插入消息来进行通信。消息由一系列通信服务器依次进行转发,最终送达目的地。即使在消息发送过程中接收方的机器未处于运行状态,消息也能送到。   ...消息转换器可以像一个消息格式重新编排工具一样简单。比如说,假定输入的小细胞含有数据库中的一张表,其中,记录之间通过特殊的代表记录结束的分隔符来分割,而记录中的字段长度已知且固定。...普通消息队列系统的目标并不仅仅在于为最终用户提供支持,建立这样的系统要解决的重要问题是:要为进程间的持久通信提供支持,无论该进程是在运行用户程序,在处理对数据库的访问,还是在进行计算等,都必须能够支持其通信...那么最后总结:  面向消息的中间件模型一般提供持久异步通信,用在RPC不适用的场合。主要用来协助高度分散的数据库继承进大规模信息系统中。

    92240
    领券