我有一个通过 golang 编写的服务,它作为消费者工作,它从 kafka 的队列中获取数据并将其存储在 PostgreSQL 数据库中。在执行某些请求时,golang 开始增加 PG 连接,然后超过它们的限制。我不知道为什么,请帮我解决这个问题。这是代码:
func SaveMessageStatus(msg models.Message) error {
db := GetPostgreInstance() // Get *sql.DB instance
// Проверяем есть ли записи
rows, err := db.Query(`select * from "tNotifStatus" where "NotificationId" = $1`, msg.NotificationID)
if err != nil {
CheckError(err, "SLCT status", "")
return err
}
if rows.Next() {
// Смотрим если запись в таблице уже есть, тогда просто обновляем статусы по сообщению
fsql := `update "tNotifStatus" set "Status" = $1, "Error" = $2, "UpdateTime" = $3 where "NotificationId" = $4`
_, err = db.Exec(fsql, msg.Status, msg.Error, msg.UpdateTime, msg.NotificationID)
if err != nil {
//Логируем
CheckError(err, "UPDT status", "")
return err
}
} else {
// Если записей нет, то создаем новую
fsql := `insert into "tNotifStatus" values ($1,$2,$3,$4,$5)`
_, err = db.Exec(fsql, msg.NotificationID, msg.Status, msg.Error, msg.ChannelName, msg.UpdateTime)
if err != nil {
//Логируем
CheckError(err, "INS status", "")
return err
}
}
return err
}
慕侠2389804
相关分类