/// <summary> /// Performs application-defined tasks associated with freeing, /// releasing, or resetting unmanaged resources. /// </summary> public void Dispose() { var cd = AppDomain.CurrentDomain; cd.AssemblyLoad -= CurrentDomainOnAssemblyLoad; //cd.TypeResolve += CdOnTypeResolve; cd.UnhandledException -= OnAppDomainUnhandledException; cd.ResourceResolve -= CdOnResourceResolve; cd.FirstChanceException -= CurrentDomainOnFirstChanceException; _container?.Dispose(); AppContainer?.Dispose(); }
public void Dispose() { notificationService?.Dispose(); updateChecker?.Dispose(); container?.Dispose(); }
/// <summary> /// 释放容器 /// </summary> public void Dispose() { _container.Dispose(); }
public async Task Aggregator_Consume40EventsWith5BucketSize_2BucketsMustBeCreatedBecauseOfSizeAndPeriod() { //prepare IConfiguration configuration = ConfigurationHelper.ProvideConfiguration(); var exchangeName = "Aggregator_Consume40EventsWith5BucketSize_2BucketsMustBeCreatedBecauseOfSizeAndPeriod.exchangename"; configuration["rabbitmq:exchangename"] = exchangeName; configuration["rabbitmq:waitexchangename"] = exchangeName.Replace("exchangename", "waitexchangename"); var maxretrycount = 2; IContainer container = ConfigurationHelper.ConfigureContainer(configuration); //create Subscriber var bookingactivityCreatedSubscriberFactory = container.Resolve <ISubscriberFactory>(); ISubscriber aggregatorSubscriber = await bookingactivityCreatedSubscriberFactory .CreateSubscriberAsync("Aggregator_Consume40EventsWith5BucketSize_2BucketsMustBeCreatedBecauseOfSizeAndPeriod" + ".bookingactivitycreatedclusterizator", new List <string> { "*.entity.create.bookingactivity", }, maxretrycount, 40); var activityBatchSubscriberFactory = container.Resolve <ISubscriberFactory>(); ISubscriber activityBatchSubscriber = await activityBatchSubscriberFactory .CreateSubscriberAsync("Aggregator_Consume40EventsWith5BucketSize_2BucketsMustBeCreatedBecauseOfSizeAndPeriod" + ".activityclusterizator", new List <string> { "*.activitytagging", }, maxretrycount, 1); //create Publisher var publisher = container.Resolve <IPublisher>(); string bookingactivityRoutingKey = "changetracker.entity.create.bookingactivity"; string activitytaggingRoutingKey = "activityclusterizator.activitytagging"; //create aggregator var bookingActivitiesChangeTrackerEventAggregator = new Aggregator <BookingActivity, Guid>( intergrationevent => Task.FromResult(intergrationevent.Content.ActivityId), 30, activitiesIds => { var activitytaggingintergrationevnt = new IntegrationEvent <ActivityTags> { EventId = Guid.NewGuid(), CorrelationId = Guid.NewGuid(), EventCreationDate = DateTime.UtcNow, EventType = "activitytagging", Version = "0.1", Content = new ActivityTags() { ActivityIds = activitiesIds.ToList() } }; return(publisher.PublishEventAsync(activitytaggingintergrationevnt, activitytaggingRoutingKey)); }, TimeSpan.FromSeconds(10)); aggregatorSubscriber.Subscribe(SubscriptionBuilder.Create() .AddSubscription("bookingactivityCreated", () => bookingActivitiesChangeTrackerEventAggregator) .Build()); var activityBatchProcessor = new ActivityTagsConsumer(); activityBatchSubscriber.Subscribe(SubscriptionBuilder.Create() .AddSubscription("activitytagging", () => activityBatchProcessor) .Build()); List <IntegrationEvent <BookingActivity> > originalBookingActivityCreatedEvents = new List <IntegrationEvent <BookingActivity> >(); for (int i = 1; i <= 40; i++) { originalBookingActivityCreatedEvents.Add(new IntegrationEvent <BookingActivity> { EventId = Guid.NewGuid(), CorrelationId = Guid.NewGuid(), EventCreationDate = DateTime.UtcNow, EventType = "bookingactivityCreated", Version = "0.1", Content = new BookingActivity() { ActivityId = Guid.NewGuid(), BookingId = Guid.NewGuid() } }); } //act foreach (var bookingActivityCreatedEvent in originalBookingActivityCreatedEvents) { await publisher.PublishEventAsync(bookingActivityCreatedEvent, bookingactivityRoutingKey); } //wait 12 seconds await Task.Delay(12000); //check List <Guid> expectedresult = new List <Guid>(); IntegrationEvent <ActivityTags> countBasedBucket = activityBatchProcessor.ProcessedIntegrationEvents[0]; countBasedBucket.Content.ActivityIds.Count().Should().Be(30); expectedresult.AddRange(countBasedBucket.Content.ActivityIds); IntegrationEvent <ActivityTags> maxWaitingTimeBasedBucket = activityBatchProcessor.ProcessedIntegrationEvents[1]; maxWaitingTimeBasedBucket.Content.ActivityIds.Count().Should().Be(10); expectedresult.AddRange(maxWaitingTimeBasedBucket.Content.ActivityIds); expectedresult.ShouldBeEquivalentTo(originalBookingActivityCreatedEvents.Select(ob => ob.Content.ActivityId)); container.Dispose(); }
public void Dispose() { m_ToolbarProxy.RequestMacroRunning -= OnRequestMacroRunning; m_Container.Dispose(); }
public async Task QueueInfoProvider_GetQueueInfo_CorrectCountOfReadyMessagesMustBeReturned() { //prepare IConfiguration configuration = ConfigurationHelper.ProvideConfiguration(); var exchangeName = "QueueInfoProvider_GetQueueInfo_CorrectCountOfReadyMessagesMustBeReturned.exchangename"; configuration["rabbitmq:exchangename"] = exchangeName; configuration["rabbitmq:waitexchangename"] = exchangeName.Replace("exchangename", "waitexchangename"); var maxretrycount = 2; IContainer container = ConfigurationHelper.ConfigureContainer(configuration); //create Subscriber var bookingCreatedSubscriberFactory = container.Resolve <ISubscriberFactory>(); ISubscriber fastSubscriber = await bookingCreatedSubscriberFactory .CreateSubscriberAsync("QueueInfoProvider_GetQueueInfo_CorrectCountOfReadyMessagesMustBeReturned" + ".fast", new List <string> { "*.entity.create.booking", }, maxretrycount, 5); ISubscriber slowSubscriber = await bookingCreatedSubscriberFactory .CreateSubscriberAsync("QueueInfoProvider_GetQueueInfo_CorrectCountOfReadyMessagesMustBeReturned" + ".slow", new List <string> { "*.entity.create.booking", }, maxretrycount, 1); //create Publisher var publisher = container.Resolve <IPublisher>(); string bookingRoutingKey = "changetracker.entity.create.booking"; //act BookingCreated bookingCreated = new BookingCreated() { BookingName = string.Concat("Microsoft Sale", Guid.NewGuid().ToString()) }; var bookingCreatedIntegrationEvent = new IntegrationEvent <BookingCreated>() { Content = bookingCreated, EventType = "bookingcreated" }; for (int i = 1; i <= 8; i++) { await publisher.PublishEventAsync(bookingCreatedIntegrationEvent, bookingRoutingKey); } //wait 1 second await Task.Delay(1000); //ckeck the GetQueueInfo method first call var queueInfoProvider = container.Resolve <IQueueInfoProvider>(); var fastSubscriberQueueSnapshotInfo = queueInfoProvider.GetQueueInfo( "QueueInfoProvider_GetQueueInfo_CorrectCountOfReadyMessagesMustBeReturned.fast"); fastSubscriberQueueSnapshotInfo.CountOfMessages.Should().Be(8); var slowSubscriberQueueSnapshotInfo = queueInfoProvider.GetQueueInfo( "QueueInfoProvider_GetQueueInfo_CorrectCountOfReadyMessagesMustBeReturned.slow"); slowSubscriberQueueSnapshotInfo.CountOfMessages.Should().Be(8); //Let's create Subscriber var fastBookingTypedSubscriberConsumer = new BookingTypedParallellismCounterConsumer(500); var slowBookingTypedSubscriberConsumer = new BookingTypedParallellismCounterConsumer(500); fastSubscriber.Subscribe(SubscriptionBuilder.Create() .AddSubscription("bookingcreated", () => fastBookingTypedSubscriberConsumer) .Build()); slowSubscriber.Subscribe(SubscriptionBuilder.Create() .AddSubscription("bookingcreated", () => slowBookingTypedSubscriberConsumer) .Build()); //wait 10 seconds await Task.Delay(10000); //check //ckeck the GetQueueInfo method second call fastSubscriberQueueSnapshotInfo = queueInfoProvider.GetQueueInfo( "QueueInfoProvider_GetQueueInfo_CorrectCountOfReadyMessagesMustBeReturned.fast"); fastSubscriberQueueSnapshotInfo.CountOfMessages.Should().Be(0); slowSubscriberQueueSnapshotInfo = queueInfoProvider.GetQueueInfo( "QueueInfoProvider_GetQueueInfo_CorrectCountOfReadyMessagesMustBeReturned.slow"); slowSubscriberQueueSnapshotInfo.CountOfMessages.Should().Be(0); container.Dispose(); }
public void Dispose() => m_Container.Dispose();
void IDisposable.Dispose() { container.Dispose(); }
protected void ShutdownIoC() { container.Dispose(); }
private void OnExit(object sender, ExitEventArgs e) { _container.Dispose(); }
public void Dispose() => autofacContainer.Dispose();