`
t22011787
  • 浏览: 75121 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

消费消息事务发生回滚-消息转发到DLQ 死信队列

阅读更多
没有被持久化的消息,在消息消费时候出现回滚时,消息将丢失。不会转发到死信队列中去,即默认的全局死信队列"ActiveMQ.DLQ"
1.org.apache.activemq.broker.region.PrefetchSubscription 类
方法:
public final void acknowledge(final ConnectionContext context,final MessageAck ack) throws Exception
第356行
...
if (inAckRange) {
        sendToDLQ(context, node);
...
第460行
protected void sendToDLQ(final ConnectionContext context, final MessageReference node) throws IOException, Exception {
    broker.sendToDeadLetterQueue(context, node);
}

2.org.apache.activemq.broker.region.RegionBroker 类
方法:
public void sendToDeadLetterQueue(ConnectionContext context,
                MessageReference node)
第679行
if(deadLetterStrategy.isSendToDeadLetterQueue(message))

3.org.apache.activemq.broker.region.policy.AbstractDeadLetterStrategy 类
方法:
public boolean isSendToDeadLetterQueue(Message message) {
    boolean result = false;
    if (message != null) {
        result = true;
        if (!message.isPersistent() && !processNonPersistent) {
            result = false;
        }
        if (message.isExpired() && !processExpired) {
            result = false;
        }
    }
    return result;
}
分享到:
评论

相关推荐

    MySQL事务部分回滚-回滚到指定保存点.zip_MYSQL_begunfqh_detailrj2

    在“MySQL事务部分回滚-回滚到指定保存点.pdf”文件中,你可能会找到更多关于如何在实际操作中应用这些概念的详细步骤和示例,包括如何创建和管理保存点,以及如何在出现问题时有效地回滚到特定保存点。建议仔细阅读...

    子线程任务发生异常,主线程事务如何回滚

    本文将详细探讨当子线程任务发生异常时,如何让主线程捕获到该异常并进行事务的回滚。下面将从多线程编程的基础知识、线程池的使用、异常捕获三个方面进行阐述。 一、多线程编程基础知识 在 Java 中,存在两种线程...

    简单的c#事务回滚实例代码

    当事务中的某一步骤出现问题,可以使用回滚(Rollback)操作撤销所有已完成的步骤,恢复到事务开始前的状态。 在C#中,我们可以利用System.Transactions命名空间提供的TransactionScope类来创建一个事务上下文。...

    Spring+Mybatis整合事务回滚

    花了一晚上时间终于搞出来了Spring整合Mybatis事务回滚(Mysql数据库),控制Service层中的多次插入操作,多次操作整体是一个事务。 里面有缘嘛和jar包,资源为war包,导入即可。运行Test类中的测试代码即可。 建表...

    spring 简单实例 事务回滚

    如果在事务执行过程中出现错误,事务可以回滚到事务开始前的状态,这样可以避免数据不一致。 Spring 提供了声明式事务管理,这是通过在配置文件或使用注解来声明事务边界的方式。例如,我们可以使用`@Transactional...

    Spring/SpringMVC/MyBatis整合+事务回滚

    7. **实现事务回滚**:当在@Transactional注解的方法中发生异常时,Spring会自动回滚事务。例如,如果在保存数据时发生错误,整个事务将被回滚,保证数据的一致性。 8. **测试与调试**:完成整合后,通过编写单元...

    redis事务回滚工具

    基于SpringBoot的轻量级redis事务回滚机制,使用栈和ThreadLocal记录业务链的redis操作,发生异常进行回滚,参考了阿里巴巴Seata AT模式的db回滚策略:补偿回滚,记录前镜像与当前操作语句,反向解析生成补偿动作。...

    SQL 事务回滚解决 回滚无效的情况

    SQL 事务回滚解决回滚无效的情况 BEGIN TRY END TRY CAHTH

    数据库试验,关于事务的创建撤销,事务的回滚等基本操作练习

    在事务中,如果发生错误,可以回滚到事务开始前的状态,而在非事务模式下,错误可能导致部分操作被提交,导致数据不一致。 如果在执行事务过程中遇到断电情况,数据库系统通常会使用日志记录事务的状态,以便在重启...

    导入Excel到数据库的完整案例,带数据校验/事务回滚

    在导入过程中,将一系列操作包装在一个数据库事务内,如果发生错误,可以执行回滚操作,撤销已执行的操作,防止脏数据入库。在.NET中,可以使用SqlTransaction对象与SqlCommand配合,确保所有插入操作要么全部成功,...

    oracle 事务 回滚 存储过程

    3. **错误恢复**:通过在存储过程中使用事务,可以确保在遇到错误时,可以通过`ROLLBACK`回滚到事务开始前的状态,避免数据损坏。 ### 结论 Oracle事务与存储过程的结合为数据库应用程序提供了强大的工具,以确保...

    45 如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理!l.pdf

    在一个事务中,首先生成重做日志来记录数据的变更,然后记录回滚日志来保证事务可以回滚到原始状态。在事务提交时,系统会同时确保重做日志和回滚日志已经正确写入磁盘。如果发生故障,在重启后系统可以使用重做日志...

    嵌套事务的回滚与提交.pdf

    这样,即使事务的后期部分出错,也可以通过回滚到保存点来恢复到之前的状态,而不会影响到保存点之前的操作。当外部调用内部保存点,并在内部出错时,外部事务仍能正常执行,仅内部事务回滚到保存点。但如果外部事务...

    批量导入Excel数据到数据库,带数据校验/事务回滚

    事务可以包裹整个导入过程,一旦发生错误,所有更改都将被回滚,保持数据库状态不变。在.NET中,可以使用ADO.NET的`TransactionScope`类来创建分布式事务。 4. **数据导入**:将预处理后的数据分批插入到数据库中。...

    分布式简易事务回滚框架:biz-center-base-transaction

    分布式简易事务回滚框架:biz-center-base-transaction

    java 数据库操作,事务回滚

    java 应用程序操作数据库实例,若出现sql异常则事务回滚。

    系统需求说明书

    - 最低保障:事务回滚 - 成功保证:游客成功注册为用户 - 扩展情况:找不到页面、未填写信息、网络中断等情况,系统应有相应的处理机制 - **登陆**: - 参与者:注册用户、管理员 - 前置条件:用户已注册 - ...

    oracle回滚段使用率过高之解决方法

    1. 事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,Oracle 将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。 2. 事务恢复:当...

    NET 2.0中的事务处理、回滚处理

    总的来说,.NET 2.0中的事务处理提供了丰富的工具和策略,以应对不同级别的事务需求,从轻量级的本地事务到复杂的分布式事务。这些机制使得开发者能够在保证数据安全的同时,编写出更高效、更易于维护的代码。在实际...

    行业-45 如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理!l.rar

    当一个事务在执行过程中遇到问题,例如系统故障或用户请求回滚,数据库系统需要有能力恢复到事务开始前的状态。这就引出了我们今天要探讨的核心概念——undo log,即回滚日志。 Undo log是数据库管理系统用来记录...

Global site tag (gtag.js) - Google Analytics