func()

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)
}