public async Task Run()

in src/Services/Infection/Infection.FnApp/Functions/ExposedContactTrigger.cs [64:112]


        public async Task Run(
            [ServiceBusTrigger("%ContactsTopicName%", "%ExposedContactsSubscription%", Connection = "ContactsTopicListenConnection")]Message message,
            MessageReceiver messageReceiver,
            [ServiceBus("%NotificationsTopicName%", Connection = "NotificationTopicSendConnection")] MessageSender messagesQueue)
        {
            logger.LogInformation($"C# ServiceBus topic trigger function processed message: {message}");

            try
            {
                message.UserProperties.TryGetValue(MessageHeaders.UserToken, out object userTokenHeader);
                var infectedUserToken = userTokenHeader?.ToString();

                var exposedContact = MessageHelper.GetMessageBody<ExposedContact>(message);

                if (string.IsNullOrEmpty(exposedContact.UserToken))
                {
                    throw new ApplicationException("The UserToken is required");
                }

                if (exposedContact.MeetingTime == DateTime.MinValue)
                {
                    throw new ApplicationException("The MeetingTime is required");
                }

                logger.LogInformation(
                    "UserToken: {userToken}. Exposed contact {contactToken} received.",
                    infectedUserToken,
                    exposedContact.UserToken);

                infectionService.MessageSender = messagesQueue;
                await infectionService.ProcessContact(exposedContact);

                await messageReceiver.CompleteAsync(message.SystemProperties.LockToken);
            }
            catch (Exception ex)
            {
                // Manage retries using our message retry handler
                if (!await RetryHandler.RetryMessageAsync(
                        message,
                        ex,
                        messageReceiver,
                        policyOptions,
                        logger))
                {
                    logger.LogError($"Unhandled exception: {ex.Message}", ex);
                    throw;
                }
            }
        }