kafka 批量 回写mysql_Kafka应用:批量接收消息保存到MySQL中

项目需要从Kafka中接收消息,并保存到MySQL数据库中。

最初的程序每接收到一条消息,就将该消息保存到数据库中。

for messagein consumer:

content = json.loads(message.value)

a_record = record_table()

session.add(a_record)

session.commit()

每条消息都会申请一个数据库连接,执行一个事务。面对大量的消息,处理速度太慢,效率太低。

一种可行的解决方法是使用流处理系统批量添加数据到数据库。在流处理系统中,每隔一定时间或每接收到一定量的数据,都会启动处理程序。但我对流处理系统不熟悉,只好借用里面的思想,模拟一个简单的批量程序。

先将消息读入到一个数组中,当数组中数据个数大于某个阈值时,批量将数据添加到数据库中。如下所示

MAX_COMMIT_TO_DB_COUNT = 500

for messagein consumer:

content = json.loads(message.value)

a_record = record_table()

record_object_list.append(a_record)

if len(record_object_list) >= MAX_COMMIT_TO_DB_COUNT:

for a_recordin record_object_list:

session.add(a_record)

session.commit()

record_object_list = []

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值