Exemplo n.º 1
0
 public static void ConfigureInfra(this ITnfBuilder builder)
 {
     builder.Repository(config =>
     {
         config.Entity <PurchaseOrderPoco>(entity => entity.RequestDto <DefaultRequestDto>((e, d) => e.Id == d.Id));
     });
 }
Exemplo n.º 2
0
        public static void ConfigureServiceQueueInfraDependency(this ITnfBuilder builder)
        {
            Console.WriteLine("$$$ ConfigureServiceQueueInfraDependency...");
            var exchangeRouter = GetExchangeRouterConfiguration();

            builder.BusClient(busClient =>
            {
                busClient.AddPublisher(
                    exBuilder: e => exchangeRouter,
                    listener: er => new PublisherListener(
                        exchangeRouter: er,
                        serviceProvider: busClient.ServiceProvider));
            }
                              );
        }
Exemplo n.º 3
0
        public static void ConfigureLocalization(this ITnfBuilder builder)
        {
            builder.Localization(localization =>
            {
                // Incluindo o source de localização
                localization.AddJsonEmbeddedLocalizationFile(
                    Constants.LocalizationSourceName,
                    typeof(Constants).Assembly,
                    "HealthMonitoring.Web.Localization.SourceFiles");

                // Incluindo suporte as seguintes linguagens
                localization.AddLanguage("pt-BR", "Português", isDefault: true);
                localization.AddLanguage("en", "English");
            });
        }
        public static void UseDomainLocalization(this ITnfBuilder configuration)
        {
            configuration.Localization(localization =>
            {
                // Incluindo o source de localização
                localization.AddJsonEmbeddedLocalizationFile(
                    Constants.LocalizationSourceName,
                    typeof(Constants).Assembly,
                    "BasicCrud.Domain.Localization.SourceFiles");

                // Incluindo suporte as seguintes linguagens
                localization.AddLanguage("pt-BR", "Português", isDefault: true);
                localization.AddLanguage("en", "English");
            });
        }
Exemplo n.º 5
0
        public static ITnfBuilder ConfigureSalesDomain(this ITnfBuilder builder)
        {
            builder.Localization(localization =>
            {
                // Incluindo o source de localização
                localization.AddJsonEmbeddedLocalizationFile(
                    Constants.LocalizationSourceName,
                    typeof(Constants).Assembly,
                    "SuperMarket.Backoffice.Sales.Domain.Localization.SourceFiles");

                // Incluindo suporte as seguintes linguagens
                localization.AddLanguage("pt-BR", "Português", isDefault: true);
                localization.AddLanguage("en", "English");
            });

            return(builder);
        }
Exemplo n.º 6
0
        public static ITnfBuilder ConfigureCrudDomain(this ITnfBuilder builder)
        {
            builder.Localization(localization =>
            {
                // Incluindo o source de localização
                localization.AddJsonEmbeddedLocalizationFile(
                    Constants.LocalizationSourceName,
                    typeof(Constants).Assembly,
                    "SuperMarket.Backoffice.Crud.Domain.Localization.SourceFiles");

                // Incluindo suporte as seguintes linguagens
                localization.AddLanguage("pt-BR", "Português", isDefault: true);
                localization.AddLanguage("en", "English");

                builder.Repository(repository =>
                {
                    repository.Entity <IEntity>(entity => entity.RequestDto <IDefaultRequestDto>((e, d) => e.Id == d.Id));
                });
            });

            return(builder);
        }
Exemplo n.º 7
0
        public static ITnfBuilder ConfigureSalesQueueInfraDependency(this ITnfBuilder builder)
        {
            // Cria um Tópico da mensagem PurchaseOrderChangedMessage
            var purchaseOrderChangedTopicToPublish = TopicSetup.Builder
                                                     .New(s =>
                                                          s.Message <PurchaseOrderChangedMessage>()
                                                          .AddKey("PurchaseOrder.Changed.Message"));

            var purchaseOrderQueueToPublish = QueueSetup.Builder
                                              .New(s => s
                                                   .QueueName("PurchaseOrderQueue")
                                                   .Reliability(r => r
                                                                .AutoAck(false)
                                                                .AutoDeleteQueue(true)
                                                                .MaxMessageSize(256)
                                                                .PersistMessage(false))
                                                   .QoS(q => q
                                                        .PrefetchGlobalLimit(true)
                                                        .PrefetchLimit(100)
                                                        .PrefetchSize(0))
                                                   .AddTopics(purchaseOrderChangedTopicToPublish));

            // Cria um Tópico da mensagem TaxMovimentCalculatedMessage
            var taxMovimentCalculatedTopicToSubscribe = TopicSetup.Builder
                                                        .New(s =>
                                                             s.Message <TaxMovimentCalculatedMessage>()
                                                             .AddKey("TaxMoviment.Calculated.Message"));

            var taxMovimentQueueToSubscribe = QueueSetup.Builder
                                              .New(s => s
                                                   .QueueName("TaxMovimentQueue")
                                                   .Reliability(r => r
                                                                .AutoAck(false)
                                                                .AutoDeleteQueue(true)
                                                                .MaxMessageSize(256)
                                                                .PersistMessage(false))
                                                   .QoS(q => q
                                                        .PrefetchGlobalLimit(true)
                                                        .PrefetchLimit(100)
                                                        .PrefetchSize(0))
                                                   .AddTopics(taxMovimentCalculatedTopicToSubscribe));

            // Cria um Exchange Router
            var exchangeRouterToPublish = ExchangeRouter
                                          .Builder
                                          .Factory()
                                          .Name("SuperMarket")
                                          .ServerAddress("127.0.0.1")
                                          .Type(ExchangeType.topic)
                                          .QueueChannel(QueueChannel.Amqp)
                                          .Reliability(isDurable: false, isAutoDelete: false, isPersistent: false)
                                          .AddQueue(purchaseOrderQueueToPublish)
                                          .SetExclusive(false)
                                          .AutomaticRecovery(
                isEnable: true,
                connectionTimeout: 15000,
                networkRecoveryInterval: TimeSpan.FromSeconds(10))
                                          .MessageCollector(
                refreshInterval: TimeSpan.FromMilliseconds(value: 2000),
                timeout: TimeSpan.FromSeconds(60))
                                          .ShutdownBehavior(
                graceful: new CancellationTokenSource(),
                forced: new CancellationTokenSource())
                                          .Build();

            var exchangeRouterToSubscribe = ExchangeRouter
                                            .Builder
                                            .Factory()
                                            .Name("SuperMarket")
                                            .ServerAddress("127.0.0.1")
                                            .Type(ExchangeType.topic)
                                            .QueueChannel(QueueChannel.Amqp)
                                            .Reliability(isDurable: false, isAutoDelete: false, isPersistent: false)
                                            .AddQueue(taxMovimentQueueToSubscribe)
                                            .SetExclusive(false)
                                            .AutomaticRecovery(
                isEnable: true,
                connectionTimeout: 15000,
                networkRecoveryInterval: TimeSpan.FromSeconds(10))
                                            .MessageCollector(
                refreshInterval: TimeSpan.FromMilliseconds(value: 2000),
                timeout: TimeSpan.FromSeconds(60))
                                            .ShutdownBehavior(
                graceful: new CancellationTokenSource(),
                forced: new CancellationTokenSource())
                                            .Build();

            // Configura para que ela publique mensagens
            builder.BusClient(busClient =>
            {
                busClient.AddPublisher(
                    exBuilder: e => exchangeRouterToPublish,
                    listener: er => new PublisherListener(
                        exchangeRouter: er,
                        serviceProvider: busClient.ServiceProvider))
                .AddSubscriber(
                    exBuilder: e => exchangeRouterToSubscribe,
                    listener: er => new SubscriberListener(
                        exchangeRouter: er,
                        serviceProvider: busClient.ServiceProvider),
                    poolSize: 4);
            });

            return(builder);
        }