示例#1
0
    public static void Main()
    {
        var clientOptions    = new CosmosClientOptions();
        var client           = new CosmosClient("AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", clientOptions);
        var appDataContainer = client.GetContainer("ExactlyOnce", "external");

        var stateStore = new ApplicationStateStore(appDataContainer, "");

        var host = Host.CreateDefaultBuilder()
                   .ConfigureWebHostDefaults(c => c.UseStartup <Startup>())
                   .UseNServiceBus(context =>
        {
            var endpointConfiguration = new EndpointConfiguration("Samples.ExactlyOnce.ExternalService");
            endpointConfiguration.UseTransport <LearningTransport>();
            endpointConfiguration.SendOnly();
            return(endpointConfiguration);
        })
                   .UseExactlyOnceWebMachineInterface(stateStore,
                                                      new MachineWebInterfaceRequestStore(new BlobContainerClient("UseDevelopmentStorage=true", "request-store"), "external-service-"),
                                                      new MachineWebInterfaceResponseStore(new BlobContainerClient("UseDevelopmentStorage=true", "response-store"), "external-service-"),
                                                      new MessageStore(new BlobContainerClient("UseDevelopmentStorage=true", "claim-check")))
                   .Build();

        host.Run();
    }
    public static void Main()
    {
        var messageStore     = new MessageStore(new BlobContainerClient("UseDevelopmentStorage=true", "claim-check"));
        var clientOptions    = new CosmosClientOptions();
        var client           = new CosmosClient("AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", clientOptions);
        var appDataContainer = client.GetContainer("ExactlyOnce", "accounts");
        var transactionInProgressContainer = client.GetContainer("ExactlyOnce", "transactions");

        var stateStore = new ApplicationStateStore(appDataContainer);

        var host = Host.CreateDefaultBuilder()
                   .ConfigureWebHostDefaults(c => c.UseStartup <Startup>())
                   .UseNServiceBus(context =>
        {
            var endpointConfiguration = new EndpointConfiguration("Samples.ExactlyOnce.Frontend");
            var transport             = endpointConfiguration.UseTransport <LearningTransport>();
            transport.Routing().RouteToEndpoint(
                assembly: typeof(AddCommand).Assembly,
                destination: "Samples.ExactlyOnce.Backend");

            endpointConfiguration.SendOnly();

            return(endpointConfiguration);
        })
                   .UseAtomicCommitMessageSession(stateStore, new TransactionInProgressStore(transactionInProgressContainer), messageStore)
                   .Build();

        host.Run();
    }
示例#3
0
        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            var messageStore = new MessageStore(new BlobContainerClient("UseDevelopmentStorage=true", "claim-check"));
            var requestResponseStoreClient = new BlobContainerClient("UseDevelopmentStorage=true", "payment-provider-web");

            var clientOptions    = new CosmosClientOptions();
            var client           = new CosmosClient("AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", clientOptions);
            var appDataContainer = client.GetContainer("ExactlyOnce.Sample", "payment-provider");

            var stateStore = new ApplicationStateStore(appDataContainer, "Partition");

            return(Host.CreateDefaultBuilder(args)
                   .ConfigureServices(collection => collection.AddSingleton(appDataContainer))
                   .UseNServiceBus(context =>
            {
                var endpointConfiguration = new EndpointConfiguration("Samples.ExactlyOnce.PaymentProvider.Frontend");
                endpointConfiguration.SendOnly();
                var routing = endpointConfiguration.UseTransport <LearningTransport>().Routing();
                routing.RouteToEndpoint(typeof(SettleTransaction), "Samples.ExactlyOnce.PaymentProvider.Backend");
                return endpointConfiguration;
            })
                   .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup <Startup>(); })
                   .UseExactlyOnceWebMachineInterface(stateStore,
                                                      new MachineWebInterfaceRequestStore(requestResponseStoreClient, "request-"),
                                                      new MachineWebInterfaceResponseStore(requestResponseStoreClient, "response-"), messageStore));
        }
        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            var messageStore     = new MessageStore(new BlobContainerClient("UseDevelopmentStorage=true", "claim-check"));
            var clientOptions    = new CosmosClientOptions();
            var client           = new CosmosClient("AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", clientOptions);
            var appDataContainer = client.GetContainer("ExactlyOnce.Sample", "billing");

            var stateStore = new ApplicationStateStore(appDataContainer, "Customer");

            return(Host.CreateDefaultBuilder(args)
                   .UseNServiceBus(context =>
            {
                var endpointConfiguration = new EndpointConfiguration("Samples.ExactlyOnce.Billing");
                var routing = endpointConfiguration.UseTransport <LearningTransport>().Routing();

                routing.RouteToEndpoint(typeof(BillingSucceeded), "Samples.ExactlyOnce.Orders.Backend");
                routing.RouteToEndpoint(typeof(BillingFailed), "Samples.ExactlyOnce.Orders.Backend");
                routing.RouteToEndpoint(typeof(ProcessAuthorizeResponse), "Samples.ExactlyOnce.Billing");

                var settings = endpointConfiguration.UseExactlyOnce(stateStore, messageStore);
                settings.MapMessage <BillCustomer>((message, headers) => message.CustomerId);
                settings.MapMessage <ProcessAuthorizeResponse>((message, headers) => message.CustomerId);

                return endpointConfiguration;
            }));
        }
示例#5
0
        static async Task Main(string[] args)
        {
            var messageStore = new MessageStore(new BlobContainerClient("UseDevelopmentStorage=true", "claim-check"));

            var clientOptions    = new CosmosClientOptions();
            var client           = new CosmosClient("AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", clientOptions);
            var appDataContainer = client.GetContainer("ExactlyOnce", "backend");

            var stateStore = new ApplicationStateStore(appDataContainer);

            var endpointConfiguration = new EndpointConfiguration("Samples.ExactlyOnce.Backend");
            var transport             = endpointConfiguration.UseTransport <LearningTransport>();

            var settings = endpointConfiguration.UseExactlyOnce(stateStore, messageStore);

            settings.MapMessage <AddCommand>((payload, headers) => payload.AccountNumber);
            settings.MapMessage <DebitCommand>((payload, headers) => payload.AccountNumber);
            settings.MapMessage <DebitCompleteCommand>((payload, headers) => payload.AccountNumber);

            transport.Routing().RouteToEndpoint(typeof(DebitCompleteCommand), "Samples.ExactlyOnce.Backend");

            endpointConfiguration.Recoverability().Delayed(d => d.NumberOfRetries(0));

            var endpoint = await Endpoint.Start(endpointConfiguration);

            Console.WriteLine("Press <enter> to exit");
            Console.ReadLine();

            await endpoint.Stop();
        }
示例#6
0
        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            var messageStore     = new MessageStore(new BlobContainerClient("UseDevelopmentStorage=true", "claim-check"));
            var clientOptions    = new CosmosClientOptions();
            var client           = new CosmosClient("AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", clientOptions);
            var appDataContainer = client.GetContainer("ExactlyOnce.Sample", "payment-provider");

            var stateStore = new ApplicationStateStore(appDataContainer, "Partition");

            return(Host.CreateDefaultBuilder(args)
                   .UseNServiceBus(context =>
            {
                var endpointConfiguration = new EndpointConfiguration("Samples.ExactlyOnce.PaymentProvider.Backend");
                var routing = endpointConfiguration.UseTransport <LearningTransport>().Routing();

                var settings = endpointConfiguration.UseExactlyOnce(stateStore, messageStore);
                settings.MapMessage <SettleTransaction>((message, headers) => message.AccountNumber.Substring(0, 2));

                return endpointConfiguration;
            }));
        }
        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            var messageStore     = new MessageStore(new BlobContainerClient("UseDevelopmentStorage=true", "claim-check"));
            var clientOptions    = new CosmosClientOptions();
            var client           = new CosmosClient("AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==", clientOptions);
            var appDataContainer = client.GetContainer("ExactlyOnce.Sample", "orders");
            var transactionInProgressContainer = client.GetContainer("ExactlyOnce.Sample", "transactions");

            var stateStore = new ApplicationStateStore(appDataContainer, "Customer");

            return(Host.CreateDefaultBuilder(args)
                   .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup <Startup>(); })
                   .ConfigureServices(collection => collection.AddSingleton(appDataContainer))
                   .UseNServiceBus(context =>
            {
                var endpointConfiguration = new EndpointConfiguration("Samples.ExactlyOnce.Orders");
                var routing = endpointConfiguration.UseTransport <LearningTransport>().Routing();
                routing.RouteToEndpoint(typeof(BillCustomer), "Samples.ExactlyOnce.Billing");
                endpointConfiguration.SendOnly();
                return endpointConfiguration;
            })
                   .UseAtomicCommitMessageSession(stateStore,
                                                  new TransactionInProgressStore(transactionInProgressContainer), messageStore));
        }