Ejemplo n.º 1
0
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            try
            {
                GrpcChannel channel = GrpcChannel.ForAddress("https://localhost:5001");
                OrdersManager.OrdersManagerClient client = new OrdersManager.OrdersManagerClient(channel);

                NewOrderReply result = await client.GetNewOrderAsync(new NewOrderRequest());

                if (result.OrderId != 0)
                {
                    logger.LogInformation($"Processing order id {result.OrderId}");
                    await client.UpdateOrderAsync(new UpdateOrderRequest
                    {
                        OrderId = result.OrderId,
                        Status  = "Processed by .NET"
                    });
                }
                else
                {
                    logger.LogInformation($"No pending orders at {DateTimeOffset.Now}");
                }

                await channel.ShutdownAsync();
            }
            catch (Exception ex)
            {
                logger.LogError($"{ex.Message}\n{ex.StackTrace}");
            }

            await Task.Delay(3000, stoppingToken);
        }
    }
Ejemplo n.º 2
0
 private void processNewOrder(IDownStreamAdaptor adaptor, NewOrderRequest req)
 {
     if (adaptor != null)
     {
         try
         {
             Order order = new Order(req.exchangeAccount, req.symbol, req.orderId, req.price, req.quantity,
                                     (OrderSide)req.orderSide, (OrderType)req.orderType, req.account);
             adaptor.newOrder(order);
             NewOrderReply rsp = new NewOrderReply();
             rsp.result          = true;
             rsp.orderId         = req.orderId;
             rsp.exchangeAccount = req.exchangeAccount;
             rsp.message         = "sucess";
             _manager.Publish(rsp);
         }
         catch (Exception e)
         {
             NewOrderReply rsp = new NewOrderReply();
             rsp.result          = false;
             rsp.orderId         = req.orderId;
             rsp.exchangeAccount = req.exchangeAccount;
             rsp.message         = e.Message;
             _manager.Publish(rsp);
         }
     }
     else
     {
         NewOrderReply rsp = new NewOrderReply();
         rsp.result          = false;
         rsp.orderId         = req.orderId;
         rsp.exchangeAccount = req.exchangeAccount;
         rsp.message         = req.exchangeAccount + " not exist";
         _manager.Publish(rsp);
     }
 }