public async Task <ActionResult> ProcessMessage() { var consumerHelper = new ConsumerWrapper(consumerconfig, "orderrequests"); List <string> lstorderRequests = consumerHelper.testMessage(); if (lstorderRequests.Any()) { foreach (var orderRequest in lstorderRequests) { //Deserilaize OrderRequest order = JsonConvert.DeserializeObject <OrderRequest>(orderRequest); //TODO:: Process Order Console.WriteLine($"Info: OrderHandler => Processing the order for {order.productname}"); order.status = OrderStatus.COMPLETED; //Write to ReadyToShip Queue //var producerWrapper = new ProducerWrapper(producerConfig, "readytoship"); //await producerWrapper.writeMessage(JsonConvert.SerializeObject(order)); } return(Ok(lstorderRequests)); } return(Ok("No messages to process")); }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var consumerHelper = new ConsumerWrapper("libraryreservations", _config); _logger.LogInformation("The Service is running and waiting for reservations"); while (!stoppingToken.IsCancellationRequested) { var order = consumerHelper.ReadMessage <ReservationMessage>(); _logger.LogInformation($"Got a reservation for {order.For} for the items {order.Items}"); var numberOfItems = order.Items.Split(',').Count(); await Task.Delay(1000 *numberOfItems); if (numberOfItems % 2 == 0) { await _httpService.MarkReservationAccepted(order); _logger.LogInformation("\tApproved that order."); } else { await _httpService.MarkReservationRejected(order); _logger.LogWarning("\tRejected that one!"); } } }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { Console.WriteLine("OrderProcessing Service Started"); while (!stoppingToken.IsCancellationRequested) { var consumerHelper = new ConsumerWrapper(consumerConfig, "orderrequests"); string orderRequest = consumerHelper.ReadMessage(); if (string.IsNullOrWhiteSpace(orderRequest)) { Console.WriteLine("No message available!"); return; } //Deserilaize OrderRequest order = JsonConvert.DeserializeObject <OrderRequest>(orderRequest); if (order == null) { Console.WriteLine("Order details not available!"); return; } //TODO:: Process Order Console.WriteLine($"Info: OrderHandler => Processing the order for {order.productname}"); order.status = OrderStatus.COMPLETED; //Write to ReadyToShip Queue var producerWrapper = new ProducerWrapper(producerConfig, "readytoship"); await producerWrapper.WriteMessage(JsonConvert.SerializeObject(order)); } }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { foreach (var topic in _topics) { var t = new Thread(async() => { var consumerConfig = new ConsumerConfig(); _configuration.Bind("Kafka:ConsumerConfig", consumerConfig); consumerConfig.GroupId = "Elearning"; consumerConfig.AutoOffsetReset = AutoOffsetReset.Earliest; using (var consumer = new ConsumerWrapper <Null, string>(consumerConfig, topic)) { while (true) { try { var message = consumer.ReadMessage(); if (message == null) { continue; } var exam = JsonConvert.DeserializeObject <Examination>(message); var oldExam = (_examRepo.GetEntityByIdAsync(exam.ExamId).Result); if (oldExam == null) { continue; } Console.WriteLine(oldExam.ExamId); if (oldExam.Status != 1) { var c = await _examRepo.Update(exam); } } catch (Exception ex) { Console.WriteLine(ex); } } } }); t.Start(); await Task.Delay(3000, stoppingToken); _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); } } }
private static ConsumerWithToken MapConsumerWithToken(ConsumerWrapper source) { return(new ConsumerWithToken { Id = source.Id, Name = source.Name, KeyType = Enum.GetName(source.KeyType), ValueType = Enum.GetName(source.ValueType), ExpiresAt = source.ExpiresAt, Owner = source.Owner, Token = source.Token }); }
private static Responses.Consumer MapConsumer(ConsumerWrapper source) { return(new Responses.Consumer { Id = source.Id, Name = source.Name, User = source.User, KeyType = Enum.GetName(source.KeyType), ValueType = Enum.GetName(source.ValueType), ExpiresAt = source.ExpiresAt, Owner = source.Owner }); }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { using (var scope = _serviceScopeFactory.CreateScope()) { var _paymentRepository = scope.ServiceProvider.GetRequiredService <IPaymentRepository>(); await ConsumerWrapper.Consume(_consumerConfig, stoppingToken, "handle-payment-error", async (cr) => { var entity = JsonConvert.DeserializeObject <PaymentSagaEntity>(cr.Message.Value); await _paymentRepository.DeletePayment(entity.paymentId); }); } }
public async Task <ActionResult> ProcessMessage() { var consumerHelper = new ConsumerWrapper(consumerconfig, "orderrequests"); List <string> lstorderRequests = consumerHelper.readAllMessages(); if (lstorderRequests.Any()) { foreach (var orderRequest in lstorderRequests) { //TODOprocess the order } return(Ok(lstorderRequests)); } return(Ok("No messages to process")); }
static void Main(string[] args) { ConsumerWrapper consumerWrapper = new ConsumerWrapper(); consumerWrapper.Consume(); // var config = new ConsumerConfig // { // GroupId = "Loyalty_Consumer", // BootstrapServers = "kafka:9092", // AutoOffsetReset = AutoOffsetReset.Earliest // }; // using (var consumer = new ConsumerBuilder<Ignore, string>(config).Build()) // { // consumer.Subscribe("testtopic"); // CancellationTokenSource cts = new CancellationTokenSource(); // Console.CancelKeyPress += (_, e) => // { // e.Cancel = true; // cts.Cancel(); // }; // try // { // while (true) // { // try // { // var cr = consumer.Consume(cts.Token); // Console.WriteLine("LoyaltyService.Consumer:" + cr.Message.Value); // } // catch (ConsumeException e) // { // Console.WriteLine($"Error occured: {e.Error.Reason}"); // } // } // } // catch (OperationCanceledException) // { // consumer.Close(); // } // } }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { using (var scope = _serviceScopeFactory.CreateScope()) { var _paymentRepository = scope.ServiceProvider.GetRequiredService <IPaymentRepository>(); await ConsumerWrapper.Consume(_consumerConfig, stoppingToken, "handle-payment", async (cr) => { var entity = JsonConvert.DeserializeObject <PaymentEntity>(cr.Message.Value); var payResult = await _paymentRepository.Pay(entity.Id); if (!payResult.Success) { var data = new PaymentSagaEntity(entity.Id, payResult.Message); ProducerWrapper.ProduceAsync(_producerConfig, "handle-payment-error", data); } }); } }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { Console.WriteLine("OrderProcessing Service Started"); while (!stoppingToken.IsCancellationRequested) { var consumerHelper = new ConsumerWrapper(consumerConfig, "orderrequests"); string orderRequest = consumerHelper.ReadMessage(); //Deserialize OrderRequest order = JsonConvert.DeserializeObject <OrderRequest>(orderRequest); //TODO:: Process Order Console.WriteLine($"Info: OrderHandler => Processing the order for {order.ProductName}"); order.Status = OrderStatus.Completed; //Write to ReadyToShip Queue var producerWrapper = new ProducerWrapper(producerConfig, "readytoship"); await producerWrapper.WriteMessage(JsonConvert.SerializeObject(order)); } }