【技术实现步骤摘要】
一种基于消息中间件的语义方法及装置
[0001]本专利技术涉及数据流计算
,尤其涉及一种基于消息中间件的语义方法及装置。
技术介绍
[0002]流计算系统中,对于消息都有不同的语义。一般语义分为三种:
[0003]at
‑
most
‑
once:至多一次,不关心消息是否发送成功、不需要消息发送的返回值。(可丢失,比如请求日志等场景)
[0004]at
‑
least
‑
once:至少一次,允许消息重复但必须保证消息必达。(可重复,比如视频信息,修改N次,以最新的为准)
[0005]exactly
‑
once:精准一次,保证消息不丢且不会重复。(有且仅能一次,比如支付、转账等需要依赖上下文计算的场景)
[0006]现有的消息中间件,最多就是支持at
‑
most
‑
once、at
‑
least
‑
once这2种语义(最容易支持,只需在生 ...
【技术保护点】
【技术特征摘要】
1.一种基于消息中间件的语义方法,其特征在于,包括:在接收到对消息中间件的语义请求的情况下,获取所述语义请求中的语义标识;基于所述语义标识确定目标语义方法,其中,所述目标语义方法为基于幂等原理的语义方法或者基于事务原理的语义方法;在所述目标语义方法为基于幂等原理的语义方法的情况下,基于所述消息中间件对所述语义请求中的单个消息队列执行有且仅有一次的语义方法;在所述目标语义方法为基于事务原理的语义方法的情况下,基于所述消息中间件对所述语义请求中的多个消息队列执行有且仅有一次的语义方法。2.根据权利要求1所述的方法,其特征在于,在所述目标语义方法为基于幂等原理的语义方法的情况下,基于所述消息中间件对所述语义请求中的单个消息队列执行有且仅有一次的语义方法,包括:为所述单个消息队列分配第一标识,其中,每个第一标识依据单个消息队列的生成顺序递增排列;在生产者发送语义请求成功但Ack失败的情况下,接收到所述生成者再次发送的重复语义请求,获取与所述重复语义请求对应的第二标识;在所述第一标识和所述第二标识相同的情况下,抛弃与所述重复语义请求对应的生产者消息并返回Ack成功信号。3.根据权利要求2所述的方法,其特征在于,还包括:在检测到任一语义请求的情况下,获取其中的第三标识;将所述第三标识与当前最新标识进行比较,在所述第三标识小于所述当前最新标识的情况下,抛弃与所述任一语义请求对应的生产者消息并返回Ack成功信号。4.根据权利要求2所述的方法,其特征在于,还包括:存储所述单个消息队列中各个消息的消息标识;在检测到消费者因故障重启或重启新的消费者的情况下,获取各个消息标识中最新消息标识,基于所述最新消息标识重新开始消费。5.根据权利要求1所述的方法,其特征在于,在所述目标语义方法为基于事务原理的语义方法的情况下,基于所述消息中间件对所述语义请求中的多个消息队列执行有且仅有一次的语义方法,包括:分配与所述多个消息队列对应的事务标识;基于所述事物标识执行与所述多个消息队列对应的事务;在接收到结束事务请求的情况下,获取所述结束事务请求中的结束标识,基于所述结束标识对所述语义请求进行提交或者终止操作。6.根据权利要求5所述的方法,其特征在于,基于所述事物标识执行与所述多个消息队列对应的事务,包括:接收所述语义请求中多个消息队列,将所述...
【专利技术属性】
技术研发人员:喻俊,张志广,刘慧中,
申请(专利权)人:湖南快乐阳光互动娱乐传媒有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。