蓝因子 JMS 消息确认和事务

蓝因子 JMS 消息确认和事务

保证消息传送

保证消息传送有 3 个主要部分:消息自主性,存储并转发以及底层消息确认,下面具体看一下这些概念;

1. 消息自主性

消息是自包含的自主性实体,在设计分布式消息应用程序时,要将此作为头条法则;当 JMS 客户端发送一条消息时,它就完成了它的所有工作,一旦该数据被传送出去,它就被认为是” 安全的”,

而且不在受该客户端的控制,类似 JDBC 客户端和数据库直接的约定;

2. 保存并转发消息传送

可以将消息标记为持久化的,这样 JMS 『服务器』负责保存消息,以确保在提供者发生故障或消费客户端发生故障的情况下,消息可以恢复正常;消息可以集中存储或本地存储;

3. 消息确认

JMS 规定了多种确认模式,这些确认是保证消息传送的关键部分;『服务器』确认从 JMS 生产者接受消息,而 JMS 消费者确认从『服务器』接受消息;确认协议允许 JMS 提供者监测一条消息的整个过程,

以便了解是否成功的生产和消费了该消息;

消息确认

消息确认协议是保证消息传送的关键所在,JMS 主要定义了三种确认模式:auto_acknowledge,dups_ok_acknowledge 以及 client_acknowledge;

1.auto_acknowledge

auto_acknowledge 是 JMS 提供的自动确认模式,下面分别从生产者和消费者角度来分析,以下使用 ActiveMQ 来作为消息『服务器』;

1.1 生产者和消息『服务器』

生产者调用 send () 或者 publish () 方法发送消息,同时进行阻塞,直到从消息『服务器』接收到一个确认为止;底层确认对客户端编程模型来说是不可见的,如果在操作期间发生故障,就会抛出一个异常,同时认为该消息没有被传送;消息『服务器』接收到消息,如果是持久性消息就会持久化到磁盘,如果是非持久性消息就会存入内存,然后再通知生产者已经接收到消息;

上图中可能出现的异常

1.1.1. 发送消息失败

可能由于网络原因导致发送消息失败,『服务器』没有感知,需要生产者做好异常检测或者重发机制;

1.1.2. 持久化失败

生产者成功发送消息给『服务器』,『服务器』在持久化时失败,『服务器』会在通知的时候,把错误信息返回给生产者,需要生产者做好异常检测;

1.1.3. 『服务器』通知生产者失败

成功接收消息和持久化,在通知生产者时,出现网络异常导致失败,『服务器』会将此消息删除,生产者会从阻塞中返回并抛出异常;

1.2 消息『服务器』和消费者

消费者获取到消息之后,需要向『服务器』发送确认信息,如果『服务器』没有接收到确认信息,会认为该消息未被传送,会试图重新传送;如果接收到确认消息,此消息将会从持久化存储器中删除;

上图中可能出现的异常

1.2.1. 接收消息失败

对于 Queue 模型来说,是主动拉取消息,在没有成功拉取数据的情况下,『服务器』自然不会删除数据;对于 Topic 模型来说,消息『服务器』会推送给每个消费者一个消息的副本,如果是持久订阅者,一直到消息『服务器』接收到所有消息预定接收者的确认时,才会认为完成传送;如果是非持久订阅,就不会关心某一个接收者是否接收到消息;

1.2.2. 消费者通知『服务器』失败

消费者成功接收到消息,但是在处理完之后,通知『服务器』失败,导致『服务器』没有被删除,消息会被重发,消费者要做好幂等性处理;

1.2.3. 删除持久化失败

消费者成功接收到消息,『服务器』成功接收通知信息,在删除持久化数据时失败,导致数据没有被删除,消息会再次被消费,消费者要做好幂等性处理;

特别声明:[蓝因子 JMS 消息确认和事务] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

TILTA铁头多头冷靴转接件NATO拓展一转多方形多面拓展,一机多用真香神器?(tilta铁头官网)

想用一台相机📷️或运动相机📷️玩出“多机位”效果?TILTA铁头多头冷靴转接件NATO拓展一转多方形多面拓展,让单反微单运动相机📷️瞬间拥有多个扩展接口!支持NATO冷靴标准,可接灯、麦克风、监视器、提手等配件,实现一机多用。本文详解其原理、适配机

TILTA铁头多头冷靴转接件NATO拓展一转多方形多面拓展,一机多用真香神器?(tilta铁头官网)

张曼玉60岁近况曝光,终于明白『梁朝伟』当年选择刘嘉玲有多“自私”(张曼玉60岁近况如何)

令人唏嘘的是,当时剧中『梁朝伟』的一句台词,竟成了这段关系的最终注脚。就在众人期待这对恋人同台领奖时,息影三年的张曼玉携《宋家王朝》强势回归,最终刘嘉玲只能坐在观众席,看着男友与昔日对手共享荣耀。2008年,他与…

张曼玉60岁近况曝光,终于明白『梁朝伟』当年选择刘嘉玲有多“自私”(张曼玉60岁近况如何)

初中生物说课稿《人体的三道防线》(初中生物说课稿动物的运动)

试读已结束,还剩3页,您可下载完整版后进行离线阅读第1页 、 共4页…

初中生物说课稿《<strong>人体的三道防线</strong>》(初中生物说课稿动物的运动)

艾夫曼舞团中国巡演全面开票!还将首访越南+印度!(艾夫曼芭蕾舞团)

11月27日至29日,舞团将在胡志明市剧院呈现《安娜·卡列尼娜》精选片段;12月4日至5日,在河内越南-苏联友谊文化宫上演全本舞剧;随后继续前往印度国家大剧院完成四场演出。巡演作品之一《安娜·卡列尼娜》是中国…

艾夫曼舞团中国巡演全面开票!还将首访越南+印度!(艾夫曼芭蕾舞团)

柯克案嫌犯首次出庭:全程面无表情 拒绝与警方合作(柯克法官)

当地时间16日,涉嫌枪杀『美国总统特朗普』重要盟友、知名保守派政治活动人士查理·柯克的嫌犯泰勒·罗宾逊将首次出庭。这个22岁的犹他州青年面临谋杀、开枪致人重伤和妨碍司法公正等多项重罪指控

柯克案嫌犯首次出庭:全程面无表情 拒绝与警方合作(柯克法官)