static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddEnvironmentVariables(); Configuration = builder.Build(); var loggerFactory = new LoggerFactory() .AddConsole() .AddDebug(); ILogger logger = loggerFactory.CreateLogger <Program>(); var port = int.Parse(Configuration["service:port"]); var brokerList = Configuration["kafkaclient:brokerlist"]; var config = new Dictionary <string, object> { { "group.id", "order-command" }, { "enable.auto.commit", "false" }, { "bootstrap.servers", brokerList } }; IEventEmitter kafkaEmitter = new KafkaEventEmitter(config, loggerFactory.CreateLogger <KafkaEventEmitter>()); // TODO: this channel needs to use a service-discovery hostname var orderChannel = new Channel($"{Configuration["orderclient:hostname"]}:{Configuration["orderclient:port"]}", ChannelCredentials.Insecure); var inventoryChannel = new Channel($"{Configuration["inventoryclient:hostname"]}:{Configuration["inventoryclient:port"]}", ChannelCredentials.Insecure); logger.LogInformation($"Configured gRPC channel for Order Management client: {orderChannel.ResolvedTarget}"); logger.LogInformation($"Configured gRPC channel for Inventory Management client: {inventoryChannel.ResolvedTarget}"); var orderClient = new OrderManagement.OrderManagementClient(orderChannel); var inventoryClient = new InventoryManagement.InventoryManagementClient(inventoryChannel); var refImpl = new ReflectionServiceImpl( ServerReflection.Descriptor, OrderCommand.Descriptor); var rpcLogger = loggerFactory.CreateLogger <OrderCommandImpl>(); var server = new Server { Services = { OrderCommand.BindService(new OrderCommandImpl(rpcLogger, kafkaEmitter, orderClient, inventoryClient)), ServerReflection.BindService(refImpl) }, Ports = { new ServerPort("localhost", port, ServerCredentials.Insecure) } }; server.Start(); logger.LogInformation("Orders Command gRPC Service Listening on Port " + port); // Keep the process alive without consuming CPU cycles mre.WaitOne(); }
public OrdersController(OrderManagement.OrderManagementClient client, OrderCommand.OrderCommandClient orderCommandClient, ILogger <OrdersController> logger) : base() { this.orderManagementClient = client; this.orderCommandClient = orderCommandClient; this.logger = logger; logger.LogInformation("Created Orders Controller"); }
public OrderCommandImpl( ILogger logger, IEventEmitter emitter, OrderManagement.OrderManagementClient orderManagementClient, InventoryManagement.InventoryManagementClient inventoryManagementClient) { this.logger = logger; this.eventEmitter = emitter; this.orderManagementClient = orderManagementClient; this.inventoryManagementClient = inventoryManagementClient; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { Channel channel = new Channel("127.0.0.1:3000", ChannelCredentials.Insecure); var client = new OrderCommand.OrderCommandClient(channel); Channel invChannel = new Channel("127.0.0.1:3002", ChannelCredentials.Insecure); var invClient = new InventoryManagement.InventoryManagementClient(invChannel); Channel orderChannel = new Channel("127.0.0.1:3001", ChannelCredentials.Insecure); var orderClient = new OrderManagement.OrderManagementClient(orderChannel); services.AddSingleton(typeof(OrderCommand.OrderCommandClient), client); services.AddSingleton(typeof(InventoryManagement.InventoryManagementClient), invClient); services.AddSingleton(typeof(OrderManagement.OrderManagementClient), orderClient); services.AddMvc(); }
static void Main(string[] args) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddEnvironmentVariables(); Configuration = builder.Build(); ILoggerFactory loggerFactory = new LoggerFactory() .AddConsole() .AddDebug(); ILogger logger = loggerFactory.CreateLogger <Program>(); var port = int.Parse(Configuration["service:port"]); IEventEmitter kafkaEmitter = new KafkaEventEmitter(); // TODO: this channel needs to use a service-discovery hostname Channel orderChannel = new Channel($"{Configuration["orderclient:hostname"]}:{Configuration["orderclient:port"]}", ChannelCredentials.Insecure); logger.LogInformation($"Configured gRPC channel for Order Management client: {orderChannel.ResolvedTarget}"); var orderClient = new OrderManagement.OrderManagementClient(orderChannel); Server server = new Server { Services = { OrderCommand.BindService(new OrderCommandImpl(kafkaEmitter, orderClient)) }, Ports = { new ServerPort("localhost", port, ServerCredentials.Insecure) } }; server.Start(); logger.LogInformation("Orders Command RPC Service Listening on Port " + port); // Keep the process alive without consuming CPU cycles mre.WaitOne(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { Console.WriteLine("CONFIGURE SERVICES CALLED"); // TODO: make these channels DNS-disco-friendly Channel cmdChannel = new Channel(Configuration["rpcclient:ordercommand"], ChannelCredentials.Insecure); var client = new OrderCommand.OrderCommandClient(cmdChannel); Channel invChannel = new Channel(Configuration["rpcclient:inventory"], ChannelCredentials.Insecure); var invClient = new InventoryManagement.InventoryManagementClient(invChannel); Channel orderChannel = new Channel(Configuration["rpcclient:ordermanagement"], ChannelCredentials.Insecure); var orderClient = new OrderManagement.OrderManagementClient(orderChannel); logger.LogInformation($"Order Command Client: {cmdChannel.ResolvedTarget}"); logger.LogInformation($"Order Management Client: {orderChannel.ResolvedTarget}"); logger.LogInformation($"Inventory Client: {invChannel.ResolvedTarget}"); services.AddSingleton(typeof(OrderCommand.OrderCommandClient), client); services.AddSingleton(typeof(InventoryManagement.InventoryManagementClient), invClient); services.AddSingleton(typeof(OrderManagement.OrderManagementClient), orderClient); services.AddMvc(); }
static void Main(string[] args) { const int Port = 3000; IEventEmitter kafkaEmitter = new KafkaEventEmitter(); Channel orderChannel = new Channel("127.0.0.1:3001", ChannelCredentials.Insecure); var orderClient = new OrderManagement.OrderManagementClient(orderChannel); Server server = new Server { Services = { OrderCommand.BindService(new OrderCommandImpl(kafkaEmitter, orderClient)) }, Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) } }; server.Start(); Console.WriteLine("Orders Command RPC Service Listening on Port " + Port); Console.WriteLine("Press any key to stop"); Console.ReadKey(); server.ShutdownAsync().Wait(); }
public OrderCommandImpl(IEventEmitter emitter, OrderManagement.OrderManagementClient orderManagementClient) { eventEmitter = emitter; this.orderManagementClient = orderManagementClient; }