71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
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)
|
|
}
|
|
}()
|
|
}
|