in operationsbus/handlers.go [152:176]
func NewErrorReturnHandler(errHandler ErrorHandlerFunc, receiver sb.ReceiverInterface, next shuttle.HandlerFunc) ErrorHandlerFunc {
return func(ctx context.Context, settler shuttle.MessageSettler, message *azservicebus.ReceivedMessage) error {
err := errHandler.Handle(ctx, settler, message)
if err != nil {
logger := ctxlogger.GetLogger(ctx)
logger.Error("ErrorHandler: Handling error: " + err.Error())
switch err.(type) {
case *NonRetryError:
logger.Info("ErrorHandler: Handling NonRetryError.")
nonRetryOperationError(ctx, settler, message)
case *RetryError:
logger.Info("ErrorHandler: Handling RetryError.")
retryOperationError(receiver, ctx, settler, message)
default:
logger.Info("Error handled: " + err.Error())
}
}
if next != nil {
next(ctx, settler, message)
}
return err
}
}