in src/Services/Notification/Notification.FnApp/Functions/NotificationTrigger.cs [70:107]
public async Task Run(
[ServiceBusTrigger("%NotificationsTopicName%", "%StatusNotificationSubscription%", Connection = "NotificationsTopicListenConnection")]Message message,
MessageReceiver messageReceiver)
{
logger.LogInformation($"C# ServiceBus topic trigger function processed message: {message}");
try
{
message.UserProperties.TryGetValue(MessageHeaders.UserToken, out object userTokenHeader);
var contactToken = userTokenHeader?.ToString();
var pushNotification = MessageHelper.GetMessageBody<PushNotification>(message);
if (pushNotification == null || !pushNotification.IsValid())
{
throw new BadMessageException("Invalid message received.");
}
logger.LogInformation("ContactToken: {contactToken}. Sending notification...", contactToken);
await notificationsService.PushMessageAsync(pushNotification);
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(ex, $"Unhandled exception: {ex.Message}");
throw;
}
}
}