Пример #1
0
        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";
     }
 }
Пример #4
0
 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";
     }
 }