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)); }