The invention discloses a method and a device for consumption of a message queue, which can at least solve the technical problem that the consumption of the consumer in the prior art is caused by the consumption of the current data offset which is recorded in the prior art. The method includes: when the consumer task starts, the old data migration to obtain the corresponding consumption task message queue; the current data offset of the message queue the old data offset the message queue and stored in advance are compared; when the most old data offset less than that of the current data migration according to the current data, the data migration reads the message in the message queue; whenever a message reads data from the message queue, the message queue according to the current data offset offset address to update the message data corresponding to the pre stored.
【技术实现步骤摘要】
本专利技术涉及通信
,具体涉及一种消息队列的消费方法及装置。
技术介绍
目前,当业务前端生产者产生消息之后,通常是将待处理的消息存储于消息队列的消息分区中,然后交由后端的消费端进行处理。在现有技术中,每当消费端的消费任务启动时,默认根据之前记录的当前数据偏移进行消费。但是,专利技术人在实现本专利技术的过程中发现,现有技术中的上述方式至少存在下述缺陷:由于消息队列中存储的消息数据会定期进行删除,一旦之前记录的当前数据偏移所对应位置的消息已被删除,则会导致消费失败现象,由此会影响整个数据处理系统的正常运行。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的消息队列的消费方法及装置。根据本专利技术的一个方面,提供了一种消息对列的消费方法,包括:当消费任务启动时,获取所述消费任务对应的消息队列的最旧数据偏移;将所述消息队列的最旧数据偏移与预先存储的该消息队列的当前数据偏移进行比较;当所述最旧数据偏移小于所述当前数据偏移时,根据所述当前数据偏移读取该消息队列中的消息数据;每当从所述消息队列中读取一条消息数据后,根据该条消息数据对应的偏移地址更新所述预先存储的该消息队列的当前数据偏移。可选地,当所述最旧数据偏移不小于所述当前数据偏移时,根据所述最旧数据偏移读取该消息队列中的消息数据。可选地,所述消息队列具有多个消息分区,且所述预先存储的该消息队列的当前数据偏移包括:该消息队列的各个消息分区的当前数据偏移;所述获取所述消息队列的最旧数据偏移具体为:分别获取所述消息队列的各个消息分区的最旧数据偏移;所述将所述消息队列的最 ...
【技术保护点】
一种消息对列的消费方法,包括:当消费任务启动时,获取所述消费任务对应的消息队列的最旧数据偏移;将所述消息队列的最旧数据偏移与预先存储的该消息队列的当前数据偏移进行比较;当所述最旧数据偏移小于所述当前数据偏移时,根据所述当前数据偏移读取该消息队列中的消息数据;每当从所述消息队列中读取一条消息数据后,根据该条消息数据对应的偏移地址更新所述预先存储的该消息队列的当前数据偏移。
【技术特征摘要】
1.一种消息对列的消费方法,包括:当消费任务启动时,获取所述消费任务对应的消息队列的最旧数据偏移;将所述消息队列的最旧数据偏移与预先存储的该消息队列的当前数据偏移进行比较;当所述最旧数据偏移小于所述当前数据偏移时,根据所述当前数据偏移读取该消息队列中的消息数据;每当从所述消息队列中读取一条消息数据后,根据该条消息数据对应的偏移地址更新所述预先存储的该消息队列的当前数据偏移。2.根据权利要求1所述的方法,其中,当所述最旧数据偏移不小于所述当前数据偏移时,根据所述最旧数据偏移读取该消息队列中的消息数据。3.根据权利要求1或2所述的方法,其中,所述消息队列具有多个消息分区,且所述预先存储的该消息队列的当前数据偏移包括:该消息队列的各个消息分区的当前数据偏移;所述获取所述消息队列的最旧数据偏移具体为:分别获取所述消息队列的各个消息分区的最旧数据偏移;所述将所述消息队列的最旧数据偏移与预先存储的该消息队列的当前数据偏移进行比较的步骤具体为:分别将所述消息队列的各个消息分区的最旧数据偏移与预先存储的该消息队列相应的消息分区的当前数据偏移进行比较;所述根据该条消息数据对应的偏移地址更新所述存储的该消息队列的当前数据偏移的步骤具体为:根据该条消息数据对应的偏移地址更新该消息队列相应的消息分区的当前数据偏移。4.根据权利要求1-3任一所述的方法,其中,所述根据该条消息数据对应的偏移地址更新所述预先存储的该消息队列的当前数据偏移的步骤具体包括:创建用于更新当前数据偏移的事务,该事务包括:用于写入该条消息数据对应的偏移地址的第一操作,以及用于写入该条消息数据的数据内容的第二操作;当该事务中包含的第一操作和第二操作都执行成功时,向后台数据库提交该事务;当该事务中包含的第一操作和/或第二操作执行失败时,回滚该事务。5.根据权利要求1-4任一所述的方法,其中,所述获取所述消息队列...
【专利技术属性】
技术研发人员:邓怡豪,
申请(专利权)人:北京奇虎科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。