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);
        }
Пример #2
0
        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);
        }