public async Task PublishAsync <T>(T input, string topic, TimeSpan?initialVisibilityDelay = null) where T : class { var newContext = new AFBusMessageContext(); newContext.MessageID = Guid.NewGuid(); newContext.TransactionID = Context.TransactionID ?? Guid.NewGuid(); newContext.BodyType = typeof(T).AssemblyQualifiedName; newContext.BodyInFile = false; newContext.Destination = topic; newContext.SenderServiceName = Context.ActualServiceName; if (initialVisibilityDelay != null) { newContext.MessageDelayedTime = initialVisibilityDelay; newContext.MessageFinalWakeUpTimeStamp = DateTime.UtcNow + initialVisibilityDelay; } else { newContext.MessageDelayedTime = null; newContext.MessageFinalWakeUpTimeStamp = null; } await publisher.PublishEventsAsync(input, topic, newContext).ConfigureAwait(false); }
public static async Task PublishAsync <T>(T input, string topic, ISerializeMessages serializer = null, IPublishEvents publisher = null) where T : class { serializer = serializer ?? new JSONSerializer(); var newContext = new AFBusMessageContext { MessageID = Guid.NewGuid(), TransactionID = Guid.NewGuid(), BodyType = typeof(T).AssemblyQualifiedName }; publisher = publisher ?? new AzureEventHubPublishTransport(serializer); await publisher.PublishEventsAsync(input, topic, newContext).ConfigureAwait(false); }