事务消息的发送方法和装置的制造方法

文档序号:10624638阅读:252来源:国知局
事务消息的发送方法和装置的制造方法
【专利摘要】本发明提出一种事务消息的发送方法和装置,上述事务消息的发送方法包括:接收消息中心发送的事务回查请求,所述事务回查请求中携带消息标识,用于请求查询所述消息标识对应的本地事务的提交状态;查询数据库中是否存在所述消息标识对应的事务回查记录;如果存在,则通知所述消息中心投递携带所述消息标识的消息。本发明通过增加事务回查记录的数据结构,将复杂的逻辑判断改为对事务回查记录的存在性判断,从而大大降低了事务提交状态的判断复杂度。
【专利说明】
事务消息的发送方法和装置
技术领域
[0001] 本发明设及互联网技术领域,尤其设及一种事务消息的发送方法和装置。
【背景技术】
[0002] 事务是并发控制的单位,是用户定义的一个操作序列,具体来说,事务就是访问数 据库时一系列的逻辑相关动作。比如列车订票系统中选择目的地(或车次)、选择日期和时 间、选择座位(或上下铺)、出票(总票数减一张)和付费,运一系列的业务处理构成一个事 务。
[0003] 事务中的业务处理要么都执行,要么都不执行,是一个不可分割的工作单位。通过 事务,服务器可W将逻辑相关的一组业务绑定在一起,W便服务器保持数据的完整性。
[0004] 需要发送带事务的消息时,应用系统会在业务处理的过程中向消息中屯、投递一个 消息,但是运时消息中屯、不会立即将消息投递出去,在本地事务提交后,应用系统会向消息 中屯、发送事务提交信息,W通知消息中屯、可W将消息投递出去,运时消息中屯、才会将消息 投递出去。 阳〇化]但是应用系统向消息中屯、发送事务提交信息运一步骤可能由于网络调用超时或 者其他原因断掉,导致消息中屯、无法确认消息是需要投递,还是删除,所W消息中屯、会发起 事务回查,W确保应用系统的本地事务的提交状态与消息的投递状态一致。
[0006] 现有技术中,事务提交状态的判断是根据业务数据的状态来进行的,但是由于事 务中各业务对数据的更改,所W业务数据的状态的判断是非常复杂的,执行难度较大。

【发明内容】

[0007] 本发明的目的旨在至少在一定程度上解决相关技术中的技术问题之一。
[0008] 为此,本发明的第一个目的在于提出一种事务消息的发送方法。该方法通过增加 事务回查记录的数据结构,将复杂的逻辑判断改为对事务回查记录的存在性判断,从而大 大降低了事务提交状态的判断复杂度。
[0009] 本发明的第二个目的在于提出一种事务消息的发送装置。
[0010] 为了实现上述目的,本发明第一方面实施例的事务消息的发送方法,包括:接收消 息中屯、发送的事务回查请求,所述事务回查请求中携带消息标识,用于请求查询所述消息 标识对应的本地事务的提交状态;查询数据库中是否存在所述消息标识对应的事务回查记 录;如果存在,则通知所述消息中屯、投递携带所述消息标识的消息。
[0011] 本发明实施例的事务消息的发送方法,接收消息中屯、发送的事务回查请求,当查 询到数据库中存在上述事务回查请求中携带的消息标识对应的事务回查记录时,就可W确 定上述消息标识对应的本地事务已提交,于是就可W通知消息中屯、投递携带上述消息标识 的消息,从而可W通过增加事务回查记录的数据结构,将复杂的逻辑判断改为对事务回查 记录的存在性判断,大大降低了事务提交状态的判断复杂度。
[0012] 为了实现上述目的,本发明第二方面实施例的事务消息的发送装置,包括:接收模 块,用于接收消息中屯、发送的事务回查请求,所述事务回查请求中携带消息标识,用于请求 查询所述消息标识对应的本地事务的提交状态;查询模块,用于查询数据库中是否存在所 述接收模块接收的消息标识对应的事务回查记录;通知模块,用于当所述查询模块确定所 述数据库中存在所述接收模块接收的消息标识对应的事务回查记录时,通知所述消息中屯、 投递携带所述消息标识的消息。
[0013] 本发明实施例的事务消息的发送装置,接收模块接收消息中屯、发送的事务回查请 求,当查询模块查询到数据库中存在上述事务回查请求中携带的消息标识对应的事务回查 记录时,就可W确定上述消息标识对应的本地事务已提交,于是通知模块就可W通知消息 中屯、投递携带上述消息标识的消息,从而可W通过增加事务回查记录的数据结构,将复杂 的逻辑判断改为对事务回查记录的存在性判断,大大降低了事务提交状态的判断复杂度。
[0014] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变 得明显,或通过本发明的实践了解到。
【附图说明】
[0015] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变 得明显和容易理解,其中:
[0016] 图1为本发明事务消息的发送方法一个实施例的流程图;
[0017] 图2为本发明事务消息的发送方法另一个实施例的流程图;
[001引图3为本发明事务消息的发送方法再一个实施例的流程图;
[0019] 图4为本发明事务消息的发送装置一个实施例的结构示意图;
[0020] 图5为本发明事务消息的发送装置另一个实施例的结构示意图。
【具体实施方式】
[0021] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终 相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考 附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反, 本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同 物。
[0022] 图1为本发明事务消息的发送方法一个实施例的流程图,如图1所示,该事务消息 的发送方法可W包括:
[0023] 步骤101,接收消息中屯、发送的事务回查请求,上述事务回查请求中携带消息标 识,用于请求查询上述消息标识对应的本地事务的提交状态。
[0024] 步骤102,查询数据库中是否存在上述消息标识对应的事务回查记录。
[00巧]其中,该事务回查记录包括消息标识字段、该事务回查记录的创建时间字段和上 述事务回查记录的最后修改时间字段。
[00%] 本实施例中设计了专口用于事务回查的数据结构,即事务回查记录的数据结构, 可W如表1所示。 W別表1 [0028]
[OOW] 步骤103,如果存在,则通知消息中屯、投递携带上述消息标识的消息。
[0030] 本实施例中,步骤102,查询数据库中是否存在上述消息标识对应的事务回查记录 之后,如果上述数据库中不存在上述消息标识对应的事务回查记录,则通知消息中屯、删除 携带上述消息标识的消息。
[0031] 进一步地,接收消息中屯、发送的事务回查请求之前,还可W开启本地事务,在上述 本地事务中增加向数据库中插入事务回查记录的操作,在上述本地事务中包含的操作均执 行完毕之后,向数据库提交本地事务。
[0032] 进一步地,在本地事务中增加向数据库中插入事务回查记录的操作之后,还可W 向消息中屯、发送本地事务对应的消息,上述消息中携带上述消息标识。
[0033] 本实施例中,上述消息所携带的消息标识即为发送该消息的本地事务的事务回查 记录中消息标识字段的值。
[0034] 上述实施例中,接收消息中屯、发送的事务回查请求,当查询到数据库中存在上述 事务回查请求中携带的消息标识对应的事务回查记录时,就可W确定上述消息标识对应的 本地事务已提交,于是就可W通知消息中屯、投递携带上述消息标识的消息,从而可W通过 增加事务回查记录的数据结构,将复杂的逻辑判断改为对事务回查记录的存在性判断,大 大降低了事务提交状态的判断复杂度。
[0035] 图2为本发明事务消息的发送方法另一个实施例的流程图,如图2所示,该事务消 息的发送方法可W包括:
[0036] 步骤201,应用系统开启本地事务,在上述本地事务中增加向数据库中插入事务回 查记录的操作。
[0037] 其中,上述事务回查记录的数据结构可W如表1所示。
[0038] 步骤202,应用系统执行本地事务中包含的操作,并向消息中屯、发送本地事务对应 的消息。其中,该消息中携带消息标识,该消息标识即为上述本地事务的事务回查记录中消 息标识字段的值。
[0039] 步骤203,判断本地事务中包含的操作是否均被成功执行完毕。如果否,则执行步 骤204 ;如果本地事务中包含的操作均被成功执行完毕,则执行步骤205。
[0040] 步骤204,本地事务回滚,数据库中的数据不会发生任何更改,然后应用系统通知 消息中屯、删除上述本地事务对应的消息。
[0041] 步骤205,本地事务提交,数据库中的数据发生相应更新,然后应用系统通知消息 中屯、投递上述本地事务对应的消息。
[0042] 而如果由于网络调用超时或者其他原因断掉,使得应用系统无法通知到消息中屯、 是投递还是删除上述本地事务对应的消息,运就导致消息中屯、无法确认消息是需要投递, 还是删除,所W消息中屯、会发起事务回查,如图3所示,图3为本发明事务消息的发送方法 再一个实施例的流程图,图3所示实施例对消息中屯、发起事务回查的过程进行介绍,可W 包括:
[0043] 步骤301,应用系统接收消息中屯、发送的事务回查请求,上述事务回查请求中携带 消息标识,用于请求查询上述消息标识对应的本地事务的提交状态。
[0044] 步骤302,应用系统查询数据库中是否存在上述消息标识对应的事务回查记录。如 果存在,则执行步骤303 ;如果数据库中不存在上述消息标识对应的事务回查记录,则执行 步骤304。
[0045] 步骤303,应用系统通知消息中屯、投递携带上述消息标识的消息。
[0046] 步骤304,应用系统通知消息中屯、删除携带上述消息标识的消息。
[0047] 上述实施例通过增加事务回查记录的数据结构,将复杂的逻辑判断改为对事务回 查记录的存在性判断,大大降低了事务提交状态的判断复杂度。
[0048] 下面通过一个举例对本发明所提供的事务消息的发送方法的具体实现过程进行 说明。
[0049] 设想网上购物的一次交易,其付款过程至少包括W下几步数据库操作:
[0050] 一、更新客户所购商品的库存信息;
[0051] 二、保存客户付款信息--可能包括与银行系统的交互;
[0052] Ξ、生成订单并且保存到数据库中;
[0053] 四、更新用户相关信息,例如购物数量等等。
[0054] 正常的情况下,运些操作将顺利进行,最终交易成功,与交易相关的所有数据库信 息也成功地更新。但是,如果在运一系列过程中任何一个环节出了差错,例如在更新商品库 存信息时发生异常、该顾客银行账户存款不足等,都将导致交易失败。一旦交易失败,数据 库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交 易失败,那么必须保证运笔失败的交易不影响数据库的状态一一库存信息没有被更新、用 户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。 阳化5] 数据库事务正是用来保证运种情况下交易的平稳性和可预测性的技术。
[0056] 本例中,可W开启一个本地事务,该本地事务包含网上购物的一次交易所包括的 四步操作:更新客户所购商品的库存信息、保存客户付款信息、生成订单并且保存到数据库 中和更新用户相关信息,并且在本地事务中增加向数据库中插入事务回查记录的操作。然 后,应用系统执行本地事务中的操作,并向消息中屯、发送本地事务对应的消息,该消息携带 消息标识,该消息标识即为上述本地事务对应的事务回查记录中消息标识字段的值。具体 到本例中,本地事务对应的消息可W为通知用户本次购物已成功,订单已经在配送中的通 知消息。如果应用系统成功执行完本地事务包含的所有操作,则向数据库提交本地事务,运 时数据库中的数据将发生相应更新,然后应用系统可W通知消息中屯、发送上述本地事务对 应的消息。而如果本地事务包含的操作中有任何一个执行失败,本地事务回滚,数据库中的 数据不会发生任何更改,运时应用系统将通知消息中屯、删除上述本地事务对应的消息。
[0057] 但是如果由于网络调用超时或者其他原因断掉,使得应用系统无法通知到消息中 屯、是投递还是删除上述本地事务对应的消息,运就导致消息中屯、无法确认消息是需要投 递,还是需要删除,所W消息中屯、会发起事务回查,向应用系统发送事务回查请求,上述事 务回查请求中携带消息标识,用于请求查询上述消息标识对应的本地事务的提交状态,然 后应用系统查询数据库中是否存在上述消息标识对应的事务回查记录,如果存在,则应用 系统可W确定上述消息标识对应的本地事务已经成功提交,于是通知消息中屯、投递携带上 述消息标识的消息;而如果数据库中不存在上述消息标识对应的事务回查记录,则应用系 统可W确定上述消息标识对应的本地事务未被提交,于是通知消息中屯、删除携带上述消息 标识的消息。从而可W通过增加事务回查记录的数据结构,将复杂的逻辑判断改为对事务 回查记录的存在性判断,大大降低了事务提交状态的判断复杂度。
[0058] 图4为本发明事务消息的发送装置一个实施例的结构示意图,本实施例中的事务 消息的发送装置可W作为应用系统,或应用系统的一部分实现本发明图1所示实施例的流 程,如图4所示,上述事务消息的发送装置可W包括:接收模块41、查询模块42和通知模块 43 ;
[0059] 其中,接收模块41,用于接收消息中屯、发送的事务回查请求,上述事务回查请求中 携带消息标识,用于请求查询上述消息标识对应的本地事务的提交状态。
[0060] 查询模块42,用于查询数据库中是否存在接收模块41接收的消息标识对应的事 务回查记录;其中,该事务回查记录包括消息标识字段、该事务回查记录的创建时间字段和 上述事务回查记录的最后修改时间字段。具体地,事务回查记录的数据结构可W如表1所 /J、- 〇
[0061] 通知模块43,用于当查询模块42确定上述数据库中存在接收模块41接收的消息 标识对应的事务回查记录时,通知消息中屯、投递携带上述消息标识的消息。
[0062] 进一步地,通知模块43,还用于当查询模块42确定上述数据库中不存在上述消息 标识对应的事务回查记录时,通知消息中屯、删除携带上述消息标识的消息。
[0063] 上述事务消息的发送装置中,接收模块41接收消息中屯、发送的事务回查请求,当 查询模块42查询到数据库中存在上述事务回查请求中携带的消息标识对应的事务回查记 录时,就可W确定上述消息标识对应的本地事务已提交,于是通知模块43就可W通知消息 中屯、投递携带上述消息标识的消息,从而可W通过增加事务回查记录的数据结构,将复杂 的逻辑判断改为对事务回查记录的存在性判断,大大降低了事务提交状态的判断复杂度。
[0064] 图5为本发明事务消息的发送装置另一个实施例的结构示意图,与图4所示的事 务消息的发送装置相比,不同之处在于,图5所示的事务消息的发送装置还可W包括:开启 模块44、增加模块45和提交模块46 ; 阳0化]其中,开启模块44,用于在接收模块41接收消息中屯、发送的事务回查请求之前, 开启本地事务;
[0066] 增加模块45,用于在开启模块44开启的本地事务中增加向数据库中插入事务回 查记录的操作;
[0067] 提交模块46,用于在上述本地事务中包含的操作均执行完毕之后,向数据库提交 本地事务。
[0068] 进一步地,上述事务消息的发送装置还可W包括:
[0069] 发送模块47,用于在增加模块45在上述本地事务中增加向数据库中插入事务回 查记录的操作之后,向消息中屯、发送上述本地事务对应的消息,该消息中携带上述消息标 识。本实施例中,上述消息所携带的消息标识即为发送该消息的本地事务的事务回查记录 中消息标识字段的值。
[0070] 上述事务消息的发送装置可W通过增加事务回查记录的数据结构,将复杂的逻辑 判断改为对事务回查记录的存在性判断,大大降低了事务提交状态的判断复杂度。
[0071] 需要说明的是,在本发明的描述中,除非另有说明,"多个"的含义是两个或两个W 上。
[0072] 流程图中或在此W其他方式描述的任何过程或方法描述可W被理解为,表示包括 一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部 分,并且本发明的优选实施方式的范围包括另外的实现,其中可W不按所示出或讨论的顺 序,包括根据所设及的功能按基本同时的方式或按相反的顺序,来执行功能,运应被本发明 的实施例所属技术领域的技术人员所理解。
[0073] 应当理解,本发明的各部分可W用硬件、软件、固件或它们的组合来实现。在上 述实施方式中,多个步骤或方法可W用存储在存储器中且由合适的指令执行系统执行的 软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公 知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻 辑口电路的离散逻辑电路,具有合适的组合逻辑口电路的专用集成电路,可编程口阵列 (Programm油le Gate Array;W下简称:PGA),现场可编程口阵列(Field Programm油le Gate Array 下简称:FPGA)等。
[0074] 本技术领域的普通技术人员可W理解实现上述实施例方法携带的全部或部分步 骤是可W通过程序来指令相关的硬件完成,所述的程序可W存储于一种计算机可读存储介 质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[00巧]此外,本发明各个实施例中的各功能模块可W集成在一个处理模块中,也可W是 各个模块单独物理存在,也可W两个或两个W上模块集成在一个模块中。上述集成的模块 既可W采用硬件的形式实现,也可W采用软件功能模块的形式实现。所述集成的模块如果 W软件功能模块的形式实现并作为独立的产品销售或使用时,也可W存储在一个计算机可 读取存储介质中。
[0076] 上述提到的存储介质可W是只读存储器,磁盘或光盘等。
[0077] 在本说明书的描述中,参考术语"一个实施例"、"一些实施例"、"示例"、"具体示 例"、或"一些示例"等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特 点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不 一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可W在任何 的一个或多个实施例或示例中W合适的方式结合。
[007引尽管上面已经示出和描述了本发明的实施例,可W理解的是,上述实施例是示例 性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可W对上述 实施例进行变化、修改、替换和变型。
【主权项】
1. 一种事务消息的发送方法,其特征在于,包括: 接收消息中心发送的事务回查请求,所述事务回查请求中携带消息标识,用于请求查 询所述消息标识对应的本地事务的提交状态; 查询数据库中是否存在所述消息标识对应的事务回查记录; 如果存在,则通知所述消息中心投递携带所述消息标识的消息。2. 根据权利要求1所述的方法,其特征在于,所述查询数据库中是否存在所述消息标 识对应的事务回查记录之后,还包括: 如果所述数据库中不存在所述消息标识对应的事务回查记录,则通知所述消息中心删 除携带所述消息标识的消息。3. 根据权利要求1或2所述的方法,其特征在于,所述接收消息中心发送的事务回查请 求之前,还包括: 开启本地事务,在所述本地事务中增加向数据库中插入事务回查记录的操作; 在所述本地事务中包含的操作均执行完毕之后,向所述数据库提交所述本地事务。4. 根据权利要求3所述的方法,其特征在于,所述在所述本地事务中增加向数据库中 插入事务回查记录的操作之后,还包括: 向所述消息中心发送所述本地事务对应的消息,所述消息中携带所述消息标识。5. 根据权利要求1或2所述的方法,其特征在于,所述事务回查记录包括消息标识字 段、所述事务回查记录的创建时间字段和所述事务回查记录的最后修改时间字段。6. -种事务消息的发送装置,其特征在于,包括: 接收模块,用于接收消息中心发送的事务回查请求,所述事务回查请求中携带消息标 识,用于请求查询所述消息标识对应的本地事务的提交状态; 查询模块,用于查询数据库中是否存在所述接收模块接收的消息标识对应的事务回查 记录; 通知模块,用于当所述查询模块确定所述数据库中存在所述接收模块接收的消息标识 对应的事务回查记录时,通知所述消息中心投递携带所述消息标识的消息。7. 根据权利要求6所述的装置,其特征在于, 所述通知模块,还用于当所述查询模块确定所述数据库中不存在所述消息标识对应的 事务回查记录时,通知所述消息中心删除携带所述消息标识的消息。8. 根据权利要求6或7所述的装置,其特征在于,还包括: 开启模块,用于在所述接收模块接收消息中心发送的事务回查请求之前,开启本地事 务; 增加模块,用于在所述开启模块开启的本地事务中增加向数据库中插入事务回查记录 的操作; 提交模块,用于在所述本地事务中包含的操作均执行完毕之后,向所述数据库提交所 述本地事务。9. 根据权利要求8所述的装置,其特征在于,还包括: 发送模块,用于在所述增加模块在所述本地事务中增加向数据库中插入事务回查记录 的操作之后,向所述消息中心发送所述本地事务对应的消息,所述消息中携带所述消息标 识。
【文档编号】G06F9/46GK105988861SQ201510058248
【公开日】2016年10月5日
【申请日】2015年2月4日
【发明人】朱春茂, 林耿
【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1