/// <summary> /// 初始化同步消息总线 /// </summary> private void InitializeSyncMessageBus(params Assembly[] assemblies) { DependencyResolver.RegisterTypes(x => TypeUtils.IsSyncSubscriber(x), assemblies); var messageBus = DependencyResolver.Resolve <ISyncMessageBus>(); messageBus.Initialize(); messageBus.RegisterAllSubscribersInAssemblies(assemblies); messageBus.Start(); }
/// <summary> /// 注册给定程序集中的所有的AggregateRootEvent,扫描实现了IAggregateRootEvent接口的类 /// </summary> private void RegisterAggregateRootEvents(params Assembly[] assemblies) { DependencyResolver.RegisterTypes(TypeUtils.IsAggregateRootEvent, assemblies); var provider = DependencyResolver.Resolve <IAggregateRootEventTypeProvider>(); foreach (var assembly in assemblies) { foreach (var aggregateRootEventType in assembly.GetTypes().Where(x => TypeUtils.IsAggregateRootEvent(x))) { provider.RegisterAggregateRootEventTypeMapping(TypeUtils.GetAggregateRootType(aggregateRootEventType), aggregateRootEventType); } } }
/// <summary> /// 注册组件到容器 /// </summary> public Configuration RegisterComponents(params Assembly[] assemblies) { DependencyResolver.RegisterType(typeof(DefaultAggregateRootTypeProvider)); DependencyResolver.RegisterType(typeof(DefaultAggregateRootEventCallbackMetaDataProvider)); DependencyResolver.RegisterType(typeof(DefaultDomainHandlerMetaDataProvider)); DependencyResolver.RegisterType(typeof(DefaultAggregateRootEventTypeProvider)); DependencyResolver.RegisterType(typeof(DefaultSnapshotTypeProvider)); DependencyResolver.RegisterType(typeof(DefaultTypeNameMapper)); DependencyResolver.RegisterType(typeof(DefaultSyncMessageBus)); DependencyResolver.RegisterType(typeof(Log4NetLoggerFactory)); DependencyResolver.RegisterType(typeof(DefaultAggregateRootFactory)); DependencyResolver.RegisterType(typeof(JsonNetSerializer)); DependencyResolver.RegisterType(typeof(DefaultSnapshotter)); DependencyResolver.RegisterType(typeof(NoSnapshotPolicy)); DependencyResolver.RegisterType(typeof(Repository)); DependencyResolver.RegisterType(typeof(JsonMessageSerializer)); DependencyResolver.RegisterType(typeof(InMemorySubscriptionStorage)); DependencyResolver.RegisterType(typeof(MsmqMessageTransport)); DependencyResolver.RegisterType(typeof(DefaultAsyncMessageBus)); DependencyResolver.Resolve <IAggregateRootTypeProvider>().RegisterAllAggregateRootTypesInAssemblies(assemblies); DependencyResolver.Resolve <IAggregateRootEventCallbackMetaDataProvider>().RegisterAllEventCallbackMetaDataInAssemblies(assemblies); DependencyResolver.Resolve <IDomainHandlerMetaDataProvider>().RegisterAllEventSubscribersInAssemblies(assemblies); DependencyResolver.RegisterTypes(TypeUtils.IsComponent, assemblies); DependencyResolver.RegisterTypes(TypeUtils.IsRepository, assemblies); DependencyResolver.RegisterTypes(TypeUtils.IsService, assemblies); DependencyResolver.RegisterTypes(TypeUtils.IsEventStore, assemblies); DependencyResolver.RegisterTypes(TypeUtils.IsSnapshotStore, assemblies); RegisterTypeNameMappings(assemblies); RegisterAggregateRootEvents(assemblies); InitializeSyncMessageBus(assemblies); return(this); }