增加了队列消费端处理
This commit is contained in:
+9
-1
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}()
|
||||
}
|
||||
Reference in New Issue
Block a user