MOM系列文章之 - Final Consistency 讨论

简介:        消息中间件的最终一致性如何保证?架构上面,主要考虑以下几个方面:        1。事务同步;        2。消息缓存or持久化;        3。定时钟轮询        事务同步很好理解。我的消息总不能在事务提交前发出去吧?为此,架构设计中我们通常这么干: public boolean publish(AsyncEvent event) {

       消息中间件的最终一致性如何保证?架构上面,主要考虑以下几个方面:

       1。事务同步;

       2。消息缓存or持久化;

       3。定时钟轮询

       事务同步很好理解。我的消息总不能在事务提交前发出去吧?为此,架构设计中我们通常这么干:

    public boolean publish(AsyncEvent event) {
        boolean result = true;
        //1.delegate task to TransactionSynchronizationManager's afterCompletion method
        if (TransactionSynchronizationManager.isSynchronizationActive()) {
            TransactionSynchronizationManager
                    .registerSynchronization(new MQTransactionSynchronization(event, eventSender));
        } else {
            //2. just do it by manual processing
            logger.info("Publish event: {}", event);
            result = eventSender.send(event);
        }
        return result;
     }

        消息缓存or持久化,这里有两个进行实际处理的时机。其一,事务提交后,缓存或者数据库中持有一份事件,这个也比较契合EDA架构;第二个持久化的时机可以放到消息发送失败的时候。通常情况下,需要综合考虑DeliveryMode,AUTO_ACKNOWLEDGE等参数的设置。

        定时钟轮询,这一步也是MOM高可用性的一大保障。一旦我们缓存或者持久化消息后,当消息消费端出现问题,异或其它原因导致消费阻塞,我们就可以通过定时钟轮询+重推机制确保消息的最终一致性。

目录
相关文章
|
3月前
|
弹性计算 运维 小程序
阿里云服务器免费计划:2026年最新ECS云服务器和轻量应用服务器免费政策解读
阿里云2026年推出ECS与轻量应用服务器免费计划,覆盖个人开发者及企业用户。提供高达660元试用金、最高8核16GB配置,支持多地域部署与预装环境,先试后买享新客优惠,非预期费用可退,助力用户零门槛上云。
840 8
|
6月前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
593 8
|
6月前
|
传感器 编解码 数据挖掘
ASTER 全球数字高程模型 V003
ASTER GDEM V3由NASA与METI合作开发,提供全球陆地高程数据,空间分辨约30米,覆盖北纬83°至南纬83°。基于188万景ASTER影像自动生成,含DEM与场景数图层,数据经云掩膜、异常值去除及多源融合优化,适用于地形分析,但可能存在局部伪影。
371 1
|
9月前
|
自然语言处理 算法 安全
算法备案如何申请
算法备案大模型申请难度较高,主要体现在材料准备复杂、技术描述严谨、安全评估严格及审核标准模糊等方面,对企业的合规能力与专业水平提出较高要求。
|
JSON 搜索推荐 API
小红书商品列表 API 接口(小红书 API 系列)
小红书作为社交与电商结合的平台,拥有丰富的商品信息。通过小红书商品列表API接口,用户可高效、合法地获取商品数据,支持按关键词、品类等筛选条件查询,并返回JSON格式的商品列表,包含名称、图片链接、价格等信息。该接口帮助商家分析市场、制定策略,开发者构建推荐系统。示例代码展示了如何使用Python发送HTTP请求并处理响应数据。
|
数据采集 机器学习/深度学习 算法
②数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
1528 0
②数据预处理之数据清理,数据集成,数据规约,数据变化和离散化
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
机器学习/深度学习 传感器 算法
改进黑猩猩优化算法SLWCHOA 可直接运行 提供23个基准函数对比与秩和检验 注释详细适合新手小白~Matlab
改进黑猩猩优化算法SLWCHOA 可直接运行 提供23个基准函数对比与秩和检验 注释详细适合新手小白~Matlab
|
SQL 监控 算法
|
存储 机器学习/深度学习 人工智能
AIGC训练场景下的存储特征研究
在今天这样以AIGC为代表的AI时代下,了解训练场景对于存储的具体诉求同样是至关重要的。本文将尝试解读WEKA的一个相关报告,来看看AIGC对于存储有哪些具体的性能要求。
1601 4
AIGC训练场景下的存储特征研究