コード例 #1
0
        public EventSourcedRepository([Import] IBus <EventDispatcher, IEventHandler> eventBus, [Import] ITextSerializer serializer, [Import] ObjectCache cache)
        {
            this.eventBus   = eventBus;
            this.serializer = serializer;
            this.cache      = cache;

            this.messagingRandomRetry = new MessagingRandomRetry();
            this.sqlIncrementalRetry  = new SqlIncrementalRetry();

            if (typeof(IMementoOriginator).IsAssignableFrom(typeof(T)))
            {
                assignMemento = (originator) =>
                {
                    (originator as IMementoOriginator).Memento = (IMemento)this.cache.Get(PartitionKey(originator.Id));
                };

                saveMemento = (originator) =>
                {
                    var memento = (originator as IMementoOriginator).Memento;
                    this.cache.Set(PartitionKey(originator.Id),
                                   memento,
                                   new CacheItemPolicy {
                        AbsoluteExpiration = DateTime.UtcNow.AddMinutes(((ConfigurationManager.GetSection(N3Section.N3_NAME) as N3Section).ES.TypesConfiguration.CacheExpires))
                    });
                };
            }
            else
            {
                assignMemento = (originator) => { };
                saveMemento   = (originator) => { };
            }
        }
コード例 #2
0
        public ProcessManagerRepository([Import] DbContext context, [Import] IBus <CommandDispatcher, ICommandHandler> commandBus, [Import] ITextSerializer serializer)
        {
            this.commandBus = commandBus;
            this.serializer = serializer;
            this.context    = context;

            messagingRandomRetry = new MessagingRandomRetry();
            sqlIncrementalRetry  = new SqlIncrementalRetry();
        }
コード例 #3
0
ファイル: Core.cs プロジェクト: crazyants/nCubed
        public void RetryDatabase()
        {
            SqlIncrementalRetry sql = new SqlIncrementalRetry();

            int i = 0;

            sql.ExecuteAction(() =>
            {
                if (i < 3)
                {
                    i++;
                    throw new TimeoutException("Retry " + i);
                }
            });

            Assert.AreEqual(i, 3);
        }