/// <summary>
        /// Sends a message to a queue named like the service.
        /// </summary>
        public async Task SendAsync <T>(T input, string serviceName, 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       = serviceName;
            newContext.SenderServiceName = Context.ActualServiceName;

            if (initialVisibilityDelay != null)
            {
                newContext.MessageDelayedTime          = initialVisibilityDelay;
                newContext.MessageFinalWakeUpTimeStamp = DateTime.UtcNow + initialVisibilityDelay;
            }
            else
            {
                newContext.MessageDelayedTime          = null;
                newContext.MessageFinalWakeUpTimeStamp = null;
            }


            await sender.SendMessageAsync(input, serviceName, newContext).ConfigureAwait(false);
        }
示例#2
0
        /// <summary>
        /// Sends a message to a queue named like the service.
        /// </summary>
        public static async Task SendAsync <T>(T input, string serviceName, TimeSpan?initialVisibilityDelay = null, ISerializeMessages serializer = null, ISendMessages sender = null) where T : class
        {
            serializer = serializer ?? new JSONSerializer();
            sender     = sender ?? new AzureStorageQueueSendTransport(serializer);

            var context = new AFBusMessageContext
            {
                MessageID     = Guid.NewGuid(),
                TransactionID = Guid.NewGuid(),
                BodyType      = typeof(T).AssemblyQualifiedName
            };

            if (initialVisibilityDelay != null)
            {
                context.MessageDelayedTime          = initialVisibilityDelay.Value;
                context.MessageFinalWakeUpTimeStamp = DateTime.UtcNow + initialVisibilityDelay;
            }

            await sender.SendMessageAsync(input, serviceName, context).ConfigureAwait(false);
        }