增加了队列消费端处理

This commit is contained in:
2024-07-31 15:11:52 +08:00
parent 95f283ec6b
commit 1e1ce24939
24 changed files with 738 additions and 38 deletions
+9 -1
View File
@@ -3,16 +3,24 @@ package core
import (
"fmt"
"github.com/robfig/cron/v3"
"hepa-calc-api/api/crontab"
)
func StartCron() {
c := cron.New(cron.WithSeconds())
//_, err := c.AddFunc("0 * * * * *", crontab.HandleQuestionQaExpire)
// 系统优惠卷过期
//_, err := c.AddFunc("* * * * * *", crontab.SystemCouponExpire)
//if err != nil {
// panic("定时器启动失败:" + err.Error())
//}
// 用户优惠卷过期
_, err := c.AddFunc("0 0 0 * * *", crontab.UserCouponExpire)
if err != nil {
panic("定时器启动失败:" + err.Error())
}
// 启动定时任务调度器
c.Start()
+70
View File
@@ -0,0 +1,70 @@
package core
import (
"fmt"
"hepa-calc-api/api/amqp/consumer"
"hepa-calc-api/extend/rabbitMq"
"hepa-calc-api/utils"
)
// StartRabbitMq 启动rabbitmq
func StartRabbitMq() {
err := rabbitMq.NewRabbitMQClient()
if err != nil {
utils.LogJsonErr("启动rabbitmq:", err.Error())
panic(err.Error())
}
// 保持连接
go rabbitMq.HandleReconnect()
fmt.Println("初始化rabbitMq成功......")
}
// StartRabbitMqConsume 启动消费者端
func StartRabbitMqConsume() {
s := rabbitMq.ConsumeS{
QueueName: "user.coupon.expired.delay.queue",
ExchangeName: "amqp.delay.direct",
RoutingKey: "UserCouponExpired",
Handler: consumer.UserCouponExpire,
}
// 用户优惠卷过期
go startConsumer(s)
}
// UserCouponExpire 用户优惠卷过期
//func userCouponExpire() {
// go func() {
// err := rabbitMq.Consume(
// "user.coupon.expired.delay.queue", // 交换机名称
// "amqp.delay.direct", // 队列名称
// "UserCouponExpired", // 路由键
// consumer.UserCouponExpire, // 消息处理函数
// )
// if err != nil {
// fmt.Println(err.Error())
// utils.LogJsonErr("消费用户优惠卷过期队列失败", err)
// }
// }()
//}
// startConsumer 启动指定的消费者协程
func startConsumer(s rabbitMq.ConsumeS) {
go func() {
defer func() {
if r := recover(); r != nil {
utils.LogJsonErr(fmt.Sprintf("消费者协程崩溃 - %s", s.QueueName), fmt.Errorf("%v", r))
// 重新启动客户端
StartRabbitMq()
}
}()
err := s.Consume()
if err != nil {
fmt.Println(err.Error())
utils.LogJsonErr(fmt.Sprintf("启动消费者队列失败 - %s", s.QueueName), err)
}
}()
}