示例#1
0
        private SQSAdapterReceiver(QueueId queueId, SQSStorage queue)
        {
            if (queueId == null)
            {
                throw new ArgumentNullException("queueId");
            }
            if (queue == null)
            {
                throw new ArgumentNullException("queue");
            }

            Id         = queueId;
            this.queue = queue;
            logger     = LogManager.GetLogger(GetType().Name, LoggerType.Provider);
        }
示例#2
0
 public async Task Shutdown(TimeSpan timeout)
 {
     try
     {
         // await the last storage operation, so after we shutdown and stop this receiver we don't get async operation completions from pending storage operations.
         if (outstandingTask != null)
         {
             await outstandingTask;
         }
     }
     finally
     {
         // remember that we shut down so we never try to read from the queue again.
         queue = null;
     }
 }
示例#3
0
        private SQSAdapterReceiver(SerializationManager serializationManager, ILoggerFactory loggerFactory, QueueId queueId, SQSStorage queue)
        {
            if (queueId == null)
            {
                throw new ArgumentNullException("queueId");
            }
            if (queue == null)
            {
                throw new ArgumentNullException("queue");
            }

            Id         = queueId;
            this.queue = queue;
            logger     = loggerFactory.CreateLogger <SQSAdapterReceiver>();
            this.serializationManager = serializationManager;
        }
        public static async Task DeleteAllUsedQueues(string providerName, string deploymentId, string storageConnectionString)
        {
            if (deploymentId != null)
            {
                var            queueMapper = new HashRingBasedStreamQueueMapper(SQSAdapterFactory.NumQueuesDefaultValue, providerName);
                List <QueueId> allQueues   = queueMapper.GetAllQueues().ToList();

                var deleteTasks = new List <Task>();
                foreach (var queueId in allQueues)
                {
                    var manager = new SQSStorage(queueId.ToString(), storageConnectionString, deploymentId);
                    manager.InitQueueAsync().Wait();
                    deleteTasks.Add(manager.DeleteQueue());
                }

                await Task.WhenAll(deleteTasks);
            }
        }
        /// <summary>
        /// Async method to delete all used queques, for specific provider and clusterId
        /// </summary>
        /// <returns> Task object for this async method </returns>
        public static async Task DeleteAllUsedQueues(string providerName, string clusterId, string storageConnectionString, ILoggerFactory loggerFactory)
        {
            if (clusterId != null)
            {
                var            queueMapper = new HashRingBasedStreamQueueMapper(new HashRingStreamQueueMapperOptions(), providerName);
                List <QueueId> allQueues   = queueMapper.GetAllQueues().ToList();

                var deleteTasks = new List <Task>();
                foreach (var queueId in allQueues)
                {
                    var manager = new SQSStorage(loggerFactory, queueId.ToString(), storageConnectionString, clusterId);
                    manager.InitQueueAsync().Wait();
                    deleteTasks.Add(manager.DeleteQueue());
                }

                await Task.WhenAll(deleteTasks);
            }
        }
示例#6
0
        public async Task QueueMessageBatchAsync <T>(Guid streamGuid, string streamNamespace, IEnumerable <T> events, StreamSequenceToken token, Dictionary <string, object> requestContext)
        {
            if (token != null)
            {
                throw new ArgumentException("SQSStream stream provider currebtly does not support non-null StreamSequenceToken.", "token");
            }
            var        queueId = streamQueueMapper.GetQueueForStream(streamGuid, streamNamespace);
            SQSStorage queue;

            if (!Queues.TryGetValue(queueId, out queue))
            {
                var tmpQueue = new SQSStorage(this.loggerFactory, queueId.ToString(), DataConnectionString, this.ServiceId);
                await tmpQueue.InitQueueAsync();

                queue = Queues.GetOrAdd(queueId, tmpQueue);
            }
            var msg = SQSBatchContainer.ToSQSMessage(this.serializationManager, streamGuid, streamNamespace, events, requestContext);
            await queue.AddMessage(msg);
        }
示例#7
0
        public static IQueueAdapterReceiver Create(SerializationManager serializationManager, ILoggerFactory loggerFactory, QueueId queueId, string dataConnectionString, string deploymentId)
        {
            if (queueId == null)
            {
                throw new ArgumentNullException("queueId");
            }
            if (string.IsNullOrEmpty(dataConnectionString))
            {
                throw new ArgumentNullException("dataConnectionString");
            }
            if (string.IsNullOrEmpty(deploymentId))
            {
                throw new ArgumentNullException("deploymentId");
            }

            var queue = new SQSStorage(loggerFactory, queueId.ToString(), dataConnectionString, deploymentId);

            return(new SQSAdapterReceiver(serializationManager, loggerFactory, queueId, queue));
        }
示例#8
0
        public static IQueueAdapterReceiver Create(Serializer <SQSBatchContainer> serializer, ILoggerFactory loggerFactory, QueueId queueId, string dataConnectionString, string serviceId)
        {
            if (queueId == null)
            {
                throw new ArgumentNullException("queueId");
            }
            if (string.IsNullOrEmpty(dataConnectionString))
            {
                throw new ArgumentNullException("dataConnectionString");
            }
            if (string.IsNullOrEmpty(serviceId))
            {
                throw new ArgumentNullException(nameof(serviceId));
            }

            var queue = new SQSStorage(loggerFactory, queueId.ToString(), dataConnectionString, serviceId);

            return(new SQSAdapterReceiver(serializer, loggerFactory, queueId, queue));
        }