in v2/managedsettling.go [34:51]
func (m *ManagedSettler) Handle(ctx context.Context, settler MessageSettler, message *azservicebus.ReceivedMessage) {
logger := getLogger(ctx)
if err := m.next.Handle(ctx, message); err != nil {
logger.Error(fmt.Sprintf("error returned from the handler. Calling ManagedSettler error handler. error: %s", err))
m.options.OnError(ctx, m.options, settler, message, err)
return
}
settleCtx, cancel := context.WithTimeout(ctx, settlementTimeout)
defer cancel()
if err := settler.CompleteMessage(settleCtx, message, nil); err != nil {
logger.Error(fmt.Sprintf("error completing message: %s", err))
m.options.OnAbandoned(ctx, message, err)
return
// if we fail to complete the message, we log the error and let the message lock expire.
// we cannot do more at this point.
}
m.options.OnCompleted(ctx, message)
}