package mq import ( "fmt" "github.com/apache/rocketmq-client-go/v2/primitive" ) type Logger interface { // Debugf logs a formatted debugging message. Debugf(format string, args ...interface{}) // Infof logs a formatted informational message. Infof(format string, args ...interface{}) // Warnf logs a formatted warning message. Warnf(format string, args ...interface{}) // Errorf logs a formatted error message. Errorf(format string, args ...interface{}) } func init() { SetRecoverLogger(nil) } // SetRecoverLogger 设置RocketMQ的recover的处理函数日志,不设置会导致协程panic后程序退出 func SetRecoverLogger(logger Logger) { SetRecoverHandler(func(err any) { if logger == nil { fmt.Printf("rocketmq 发生 panic:%+v\n", err) return } logger.Errorf("rocketmq 发生 panic:%+v", err) }) } // SetRecoverHandler 设置RocketMQ的recover的处理函数,不设置会导致协程panic后程序退出 func SetRecoverHandler(fn func(any)) { primitive.PanicHandler = fn }