private void HandleLoadCompleted(Action continueWith, ClientMessage.ReadStreamEventsBackwardCompleted readStreamEventsBackwardCompleted) { switch (readStreamEventsBackwardCompleted.Result) { case ReadStreamResult.Success: try { _config = PersistentSubscriptionConfig.FromSerializedForm( readStreamEventsBackwardCompleted.Events[0].Event.Data); foreach (var entry in _config.Entries) { if (!_consumerStrategyRegistry.ValidateStrategy(entry.NamedConsumerStrategy)) { Log.Error( "A persistent subscription exists with an invalid consumer strategy '{strategy}'. Ignoring it.", entry.NamedConsumerStrategy); continue; } CreateSubscriptionGroup(entry.Stream, entry.Group, entry.ResolveLinkTos, entry.StartFrom, entry.ExtraStatistics, entry.MaxRetryCount, entry.LiveBufferSize, entry.HistoryBufferSize, entry.ReadBatchSize, ToTimeout(entry.CheckPointAfter), entry.MinCheckPointCount, entry.MaxCheckPointCount, entry.MaxSubscriberCount, entry.NamedConsumerStrategy, ToTimeout(entry.MessageTimeout)); } continueWith(); } catch (Exception ex) { Log.ErrorException(ex, "There was an error loading configuration from storage."); } break; case ReadStreamResult.NoStream: _config = new PersistentSubscriptionConfig { Version = "2" }; continueWith(); break; default: throw new Exception(readStreamEventsBackwardCompleted.Result + " is an unexpected result writing subscription configuration."); } }
public void output_can_be_read_as_input_and_keep_same_values() { var config = new PersistentSubscriptionConfig(); config.Updated = new DateTime(2014,08, 14); config.UpdatedBy = "Greg"; config.Version = "1"; config.Entries = new List<PersistentSubscriptionEntry>(); config.Entries.Add(new PersistentSubscriptionEntry(){Group="foo", ResolveLinkTos = true, Stream = "Stream"}); var data = config.GetSerializedForm(); var config2 = PersistentSubscriptionConfig.FromSerializedForm(data); Assert.AreEqual(1, config2.Entries.Count); Assert.AreEqual(config.Updated, config2.Updated); Assert.AreEqual(config.UpdatedBy, config2.UpdatedBy); }
private static void UpdateIfRequired(PersistentSubscriptionConfig ret) { if (ret.Version == "1") { if (ret.Entries != null) { foreach (var persistentSubscriptionEntry in ret.Entries) { if (string.IsNullOrEmpty(persistentSubscriptionEntry.NamedConsumerStrategy)) { persistentSubscriptionEntry.NamedConsumerStrategy = persistentSubscriptionEntry.PreferRoundRobin ? SystemConsumerStrategies.RoundRobin : SystemConsumerStrategies.DispatchToSingle; } } } ret.Version = "2"; } }
private static void UpdateIfRequired(PersistentSubscriptionConfig ret) { if (ret.Version == "1") { if (ret.Entries != null) { foreach (var persistentSubscriptionEntry in ret.Entries) { if (string.IsNullOrEmpty(persistentSubscriptionEntry.NamedConsumerStrategy)) { persistentSubscriptionEntry.NamedConsumerStrategy = persistentSubscriptionEntry.PreferRoundRobin ? SystemConsumerStrategies.RoundRobin : SystemConsumerStrategies.DispatchToSingle; } } } ret.Version = "2"; } }