Пример #1
0
        public EventConsumerActor(
            EventDataFormatter formatter,
            IEventStore eventStore,
            IEventConsumerInfoRepository eventConsumerInfoRepository,
            ISemanticLog log)
        {
            Guard.NotNull(log, nameof(log));
            Guard.NotNull(formatter, nameof(formatter));
            Guard.NotNull(eventStore, nameof(eventStore));
            Guard.NotNull(eventConsumerInfoRepository, nameof(eventConsumerInfoRepository));

            this.log = log;

            this.formatter  = formatter;
            this.eventStore = eventStore;
            this.eventConsumerInfoRepository = eventConsumerInfoRepository;

            var options = new ExecutionDataflowBlockOptions
            {
                MaxMessagesPerTask     = -1,
                MaxDegreeOfParallelism = 1,
                BoundedCapacity        = 10
            };

            dispatcher = new ActionBlock <object>(OnMessage, options);
        }
Пример #2
0
        public EventConsumerCleaner(IEnumerable <IEventConsumer> eventConsumers, IEventConsumerInfoRepository eventConsumerInfoRepository)
        {
            Guard.NotNull(eventConsumers, nameof(eventConsumers));
            Guard.NotNull(eventConsumerInfoRepository, nameof(eventConsumerInfoRepository));

            this.eventConsumers = eventConsumers;
            this.eventConsumerInfoRepository = eventConsumerInfoRepository;
        }
Пример #3
0
 public MyEventConsumerActor(
     EventDataFormatter formatter,
     IEventStore eventStore,
     IEventConsumerInfoRepository eventConsumerInfoRepository,
     ISemanticLog log)
     : base(formatter, eventStore, eventConsumerInfoRepository, log)
 {
 }
Пример #4
0
        public UpdateStateBlock(IEventConsumerInfoRepository eventConsumerInfoRepository, IEventConsumer eventConsumer, ISemanticLog log)
        {
            this.eventConsumerInfoRepository = eventConsumerInfoRepository;
            this.eventConsumer = eventConsumer;

            this.log = log;

            actionBlock =
                new ActionBlock <Envelope <IEvent> >(HandleAsync,
                                                     new ExecutionDataflowBlockOptions {
                BoundedCapacity = 1
            });
        }
Пример #5
0
        public void RunInitialize()
        {
            mongoDatabase = mongoClient.GetDatabase(Guid.NewGuid().ToString());

            var log = new SemanticLog(new ILogChannel[0], new ILogAppender[0], () => new JsonLogWriter(Formatting.Indented, true));

            eventConsumerInfos = new MongoEventConsumerInfoRepository(mongoDatabase);
            eventNotifier      = new DefaultEventNotifier(new InMemoryPubSub());
            eventStore         = new MongoEventStore(mongoDatabase, eventNotifier);
            eventConsumer      = new MyEventConsumer(NumEvents);

            eventReceiver = new EventReceiver(formatter, eventStore, eventNotifier, eventConsumerInfos, log);
            eventReceiver.Subscribe(eventConsumer);
        }
Пример #6
0
        public EventReceiver(
            EventDataFormatter formatter,
            IEventStore eventStore,
            IEventConsumerInfoRepository eventConsumerInfoRepository,
            ISemanticLog log)
        {
            Guard.NotNull(log, nameof(log));
            Guard.NotNull(formatter, nameof(formatter));
            Guard.NotNull(eventStore, nameof(eventStore));
            Guard.NotNull(eventConsumerInfoRepository, nameof(eventConsumerInfoRepository));

            this.log        = log;
            this.formatter  = formatter;
            this.eventStore = eventStore;
            this.eventConsumerInfoRepository = eventConsumerInfoRepository;
        }
Пример #7
0
        public EventConsumersController(IEventConsumerInfoRepository eventConsumerRepository, IActors actors)
        {
            this.eventConsumerRepository = eventConsumerRepository;

            this.actors = actors;
        }
 public EventConsumersController(IEventConsumerInfoRepository eventConsumerRepository)
 {
     this.eventConsumerRepository = eventConsumerRepository;
 }