一种避免消息丢失的方法与装置制造方法及图纸

技术编号:16700569 阅读:42 留言:0更新日期:2017-12-02 12:52
本发明专利技术实施例提供一种避免消息丢失的方法与装置,涉及互联网技术领域。其中,所述方法包括:响应于系统或消息处理程序的重启/升级指令,关闭消息获取通道以停止从Kafka集群中获取待处理消息至内存队列;若所述内存队列中有待处理消息,则以轮询的方式查询所述内存队列中消息的处理情况;若所述内存队列中没有所述待处理消息,则关闭所述消息处理程序,以执行所述系统或所述消息处理程序的重启/升级操作。本发明专利技术实施例能够避免系统或消息消费程序的重启/升级导致内存中缓存的待处理消息丢失的情况。

A method and device to avoid message loss

An embodiment of the invention provides a method and device for avoiding message loss, which involves the field of Internet technology. Among them, the method comprises the following steps: in response to a system or a message handler to restart / upgrade instruction, close the message to stop getting access to memory queue pending message from the Kafka cluster; if the message needs to be the memory queue, the polling query processing the message memory in the queue; if the memory queue without the pending message, close the message handler, to restart / execute the system or the message handler update. An embodiment of the invention can avoid the loss of pending messages cached in memory by restarting / upgrading a system or a message consumption program.

【技术实现步骤摘要】
一种避免消息丢失的方法与装置
本专利技术涉及互联网
,尤其涉及一种避免消息丢失的方法与装置。
技术介绍
Kafka是由LinkedIn开发的一个分布式的消息队列系统,消息生产者生产消息,并将消息发送至Kafka集群中进行存储,消息消费者从Kafka集群中获取消息进行处理。现有技术中,消息消费者从Kafka集群中获取多条消息至本地内存的同时,服务端会记录下该消息消费者相应的消费位置以便该消费者下次从相应的消费位置处开始获取消息。获取到的消息保存在本地内存中之后,消息消费者的消息消费程序逐一从本地内存中提取消息进行处理。若在本地内存中的消息未被处理完时出现系统或消费程序的重启或升级操作,这势必会导致本地内存中未被处理消息的丢失,并且就算系统或消费程序再次重启后,也只能从服务端记录下的消费位置开始获取数据,不仅无法具体得知本地内存中有多少消息被丢失,也无法从Kafka集群中重复获取丢失的消息。
技术实现思路
本专利技术提供一种避免消息丢失的方法与装置,目的在于避免系统或消息消费程序的重启/升级导致内存中缓存的待处理消息的丢失。为了解决上述技术问题,本专利技术提供了一种避免消息丢失的方法,本文档来自技高网...
一种避免消息丢失的方法与装置

【技术保护点】
一种避免消息丢失的方法,其特征在于,包括:响应于系统或消息处理程序的重启/升级指令,关闭消息获取通道以停止从Kafka集群中获取待处理消息至内存队列;若所述内存队列中有待处理消息,则以轮询的方式查询所述内存队列中消息的处理情况;若所述内存队列中没有所述待处理消息,则关闭所述消息处理程序,以执行所述系统或所述消息处理程序的重启/升级操作。

【技术特征摘要】
1.一种避免消息丢失的方法,其特征在于,包括:响应于系统或消息处理程序的重启/升级指令,关闭消息获取通道以停止从Kafka集群中获取待处理消息至内存队列;若所述内存队列中有待处理消息,则以轮询的方式查询所述内存队列中消息的处理情况;若所述内存队列中没有所述待处理消息,则关闭所述消息处理程序,以执行所述系统或所述消息处理程序的重启/升级操作。2.根据权利要求1所述的方法,其特征在于,所述以轮询的方式查询所述内存队列中消息的处理情况,包括:等时间间隔地多次查询所述内存队列中是否还存在有待处理消息。3.根据权利要求1所述的方法,其特征在于,还包括:从所述内存队列中获取所述待处理消息进行处理。4.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:在所述系统或消息处理程序重启/升级完成后且所述消息处理程序被再次启动时,根据服务端记录的偏移量,从Kafka集群保存的队列中所述偏移量对应的位置处开始获取待处理消息至所述内存队列。5.根据权利要求4所述的方法,其特征在于,还包括:从所述Kafka集群中获取待处理消息时,向所述服务端上报消息消费信息以更新所述服务端中的偏移量。6.一种避免消息丢失的装置,其...

【专利技术属性】
技术研发人员:张晓鹏张菊元
申请(专利权)人:北京潘达互娱科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1