public async Task <bool> Publish(IntegrationEvent @event, CancellationToken cancellationToken) { foreach (var preSendingStep in _messagePreSendingSteps) { await preSendingStep.Execute(@event, cancellationToken); } var eventName = @event.GetMessageName(); var json = _messageSerializer.PackAsJson(@event); if (string.IsNullOrWhiteSpace(json)) { return(false); } var message = new ServiceBusMessage(body: json) { MessageId = @event.Id.ToString(), Subject = eventName, }; await _sender.SendMessageAsync(message, cancellationToken); _logger.LogDebugIfEnabled("Event {EventName} with id {EventId} and '{Payload}' payload has been published at {PublishedAt} UTC", message.Subject, message.MessageId, json, DateTime.UtcNow); if (!_logger.IsEnabled(LogLevel.Debug)) { _logger.LogInformationIfEnabled("Event {EventName} with id {EventId} has been published at {PublishedAt} UTC", message.Subject, message.MessageId, DateTime.UtcNow); } return(true); }