Пример #1
0
        private static void Main(string[] args)
        {
            //启动启动器
            Bootstrapper.Run();

            //开始演示
            Console.WriteLine("//开始演示//");

            Console.WriteLine("=====================");

            Console.WriteLine("");
            Console.WriteLine("注册领域事件");
            //可以这样进行注册(推荐)
            //程序根据名称「ProductSnpCrtEvnAgr」读取配置并完成初始化与订阅工作
            DomainEventBus.Register("ProductSnpCrtEvnAgr");

            /*

            //也可以这样进行注册(不推荐,这样就不能用到 DomainEventBus 的配置了)
            //检查 DomainEventBus 内是否存在名称为「ProductSnpCrtEvnAgr」的领域事件聚合封装体
            //如果存在,对其缓存进行刷新
            //如果不存在,则使用给定的领域事件聚合封装体
            DomainEventAggregator eventAggregator = new DomainEventWrapper("ProductSnpCrtEvnAgr", 3600*72);
            DomainEventBus.Register("ProductSnpCrtEvnAgr", eventAggregator);
            
             */

            //DO SOMETHING

            Console.WriteLine("领域事件数据准备");
            //准备一个领域事件,并对其进行初始化
            var @event = new ProductSnapCreatedEvent { ProductHash = "123" };

            Console.WriteLine("发布领域事件");
            //发布领域事件
            //领域事件总线根据名称「ProductSnpCrtEvnAgr」检查相关的领域事件聚合封装体
            //完成对参数的自校验工作后,发布并执行领域事件或异步执行领域事件
            DomainEventBus.Publish("ProductSnpCrtEvnAgr", @event);

            Console.WriteLine("=====================");
            Console.WriteLine("//演示结束//");

            Console.WriteLine("");

            Console.WriteLine("输入任意东东退出");
            Console.ReadLine();

        }
 /// <summary>
 ///     Internal IsValid
 /// </summary>
 /// <param name="e"></param>
 /// <returns></returns>
 protected override bool InternalIsValid(ProductSnapCreatedEvent e)
 {
     return e.IsValid();
 }
 /// <summary>
 ///     Internal Handle
 /// </summary>
 /// <param name="e"></param>
 protected override void InternalHandle(ProductSnapCreatedEvent e)
 {
     Console.WriteLine("同步执行了 ProductSnapCreatedEventHandlerA 领域事件,ProductHash = " + e.ProductHash);
 }