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(); }
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; })); }
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(); }
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)); }