Beispiel #1
0
        public async Task ReplaceSubscribers(List <SubscriberItem> subscribers)
        {
            QueueInfo = await _queueClient.Update(new QueueInfo
            {
                PushType    = _config.GetPushType(),
                Subscribers = subscribers
            });

            await RefreshQueueInfo();
        }
        public async Task <PushForwardQueueClient> PushQueue(string name, PushForwardConfig config = null)
        {
            LazyInitializer.EnsureInitialized(ref config, () => new PushForwardConfig
            {
                PushType       = PushStyle.Multicast,
                Retries        = 3,
                RetryDelay     = TimeSpan.FromSeconds(60),
                ErrorQueueName = string.Format("{0}_Errors", name)
            });

            QueueClient queueClient = IronMqClient.Queue(name);

            QueueInfo queueInfo = await queueClient.Info();

            bool requiresPushTypeUpdate = QueueInfoHelper.RequiresPushTypeUpdate(queueInfo, config.PushType);

            bool requiresErrorQueueUpdate = QueueInfoHelper.RequiresErrorQueueUpdate(queueInfo, config);

            bool requiresRetryUpdate = QueueInfoHelper.RequiresRetryUpdate(queueInfo, config);

            bool requiresRetryDelayUpdate = QueueInfoHelper.RequiresRetryDelayUpdate(queueInfo, config);

            var update = new QueueInfo();

            bool shouldUpdate = false;

            if (requiresErrorQueueUpdate)
            {
                shouldUpdate      = true;
                update.ErrorQueue = config.ErrorQueueName;
            }

            if (requiresRetryUpdate)
            {
                shouldUpdate   = true;
                update.Retries = config.Retries;
            }

            if (requiresRetryDelayUpdate)
            {
                shouldUpdate        = true;
                update.RetriesDelay = config.RetryDelay.GetValueOrDefault().Seconds;
            }

            if (requiresPushTypeUpdate)
            {
                shouldUpdate = true;
            }

            if (shouldUpdate)
            {
                // You should always specify the PushType when calling Update
                update.PushType = config.GetPushType();

                queueInfo = await queueClient.Update(update);
            }

            return(new PushForwardQueueClient(this, queueClient, queueInfo, config));
        }