Пример #1
0
        public void Handle(StatusCodeChecked msg, IEventsDispatcher eventsDispatcher)
        {
            Debug.WriteLine($"SeleniumService: handling StatusCodeChecked({msg.ResourceId})");

            var publishActions = new List <Action>(); //будем копить отправку событий

            // Обрабатываем сообщение в транзакции
            _repositoryFactory.Execute(repository =>
            {
                try
                {
                    string html      = "some html generated by web driver";
                    int pageSourceId = repository.CreatePageSource(msg.ResourceId, html);

                    var pageSourceCreated = new PageSourceCreated(pageSourceId);
                    publishActions.Add(() => eventsDispatcher.Publish(pageSourceCreated));

                    repository.Commit();
                }
                catch
                {
                    repository.Rollback();
                    throw;
                }
            });

            // Работа выполнена, транзакция закоммичена, посылаем события
            publishActions.ForEach(action => action());
        }
Пример #2
0
        public void Handle(ResourceCreated msg, IEventsDispatcher eventsDispatcher)
        {
            Debug.WriteLine($"PagespeedChecker: handling ResourceCreated({msg.ResourceId})");

            //TODO: сделать полезную работу

            eventsDispatcher.Publish(new StatusCodeChecked(msg.ResourceId));
        }
Пример #3
0
 public string ResourceCreated(int resourceId)
 {
     _eventsDispatcher.Publish(new ResourceCreated(resourceId));
     return($"ResourceCreated({resourceId})");
 }