static void Main() { try { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(Topic); Console.ForegroundColor = ConsoleColor.White; var options = new KafkaOptions(new Uri("http://localhost:9092")) { Log = new ConsoleLog() }; var brokerRouter = new BrokerRouter(options); _brokerRoute = brokerRouter.SelectBrokerRoute(Topic); List <Topic> topics = brokerRouter.GetTopicMetadata(Topic); OffsetPosition[] offsetPositions = OffsetFetchRequest(topics.First().Partitions.Select(p => new OffsetFetch { Topic = Topic, PartitionId = p.PartitionId })).Select(o => new OffsetPosition { Offset = o.Offset + 1, PartitionId = o.PartitionId }).ToArray(); StartConsumer(offsetPositions); } catch (Exception ex) { Console.WriteLine(ex); } finally { ConsoleLog.WaitOnKeys(); } }
static void Main(string[] args) { try { var options = new KafkaOptions(new Uri("http://localhost:9092")) { Log = new ConsoleLog() }; var brokerRouter = new BrokerRouter(options); _brokerRoute = brokerRouter.SelectBrokerRoute(Topic); StartConsumer(ConsoleColor.Blue, OffsetFetchRequest().Offset + 1); StartConsumer(ConsoleColor.Green, OffsetFetchRequest().Offset + 1); StartConsumer(ConsoleColor.Red, OffsetFetchRequest().Offset + 1); StartConsumer(ConsoleColor.Yellow, OffsetFetchRequest().Offset + 1); } catch (Exception ex) { Console.WriteLine(ex); } finally { ConsoleLog.WaitOnKeys(); } }
protected bool Equals(BrokerRoute other) { return string.Equals(Topic, other.Topic) && PartitionId == other.PartitionId; }
protected bool Equals(BrokerRoute other) { return(string.Equals(Topic, other.Topic) && PartitionId == other.PartitionId); }
public void TestCase1() { //trade instrument Instrument digicoin = new Instrument() { Name = "DIGICOIN", LotSize = 10, MinLot = 1 }; //clients Account a = new Account("Client A"); Account b = new Account("Client B"); Account c = new Account("Client C"); //brokers BrokerRoute broker1 = new BrokerRoute(new FixedCommissionCalculator(5), 10); broker1.LastQuote = new Quote(1.49); BrokerRoute broker2 = new BrokerRoute(new AmountBasedCommissionCalculator(new decimal[] { 3, 3, 3, 3, 2.5M, 2.5M, 2.5M, 2.5M, 2, 2 }), 10); broker2.LastQuote = new Quote(1.52); //samrt route AKA 'aggregator' SmartRoute smart = new SmartRoute(broker1, broker2); smart.MaxLot = 10; //trade server Server server = new Server(); server.Route = smart; DealTicket ticket; //1 ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = a, Amount = 1, Side = Operation.Buy }); Assert.AreEqual(15.645M, ticket.Gross); //2 ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = b, Amount = 4, Side = Operation.Buy }); Assert.AreEqual(62.58M, ticket.Gross); //3 ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = a, Amount = 5, Side = Operation.Buy }); Assert.AreEqual(77.9M, ticket.Gross); //4 ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = b, Amount = 10, Side = Operation.Buy }); Assert.AreEqual(155.04M, ticket.Gross); //5 ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = b, Amount = 8, Side = Operation.Sell }); Assert.AreEqual(124.64M, ticket.Gross); //6 ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = c, Amount = 7, Side = Operation.Sell }); Assert.AreEqual(109.06M, ticket.Gross); //7 ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = a, Amount = 13, Side = Operation.Buy }); Assert.AreEqual(201.975M, ticket.Gross); //8 ticket = server.PlaceOrder(new Order() { Instrument = digicoin, Account = b, Amount = 6, Side = Operation.Sell }); Assert.AreEqual(93.48M, ticket.Gross); //9 Assert.AreEqual(296.156M, Math.Round(server.GetTotalAmount(a, digicoin), 3)); Assert.AreEqual(0M, Math.Round(server.GetTotalAmount(b, digicoin), 3)); Assert.AreEqual(-109.06M, Math.Round(server.GetTotalAmount(c, digicoin), 3)); //10 Assert.AreEqual(80M, server.GetTransactedAmount(broker1, digicoin)); Assert.AreEqual(460M, server.GetTransactedAmount(broker2, digicoin)); }