static void Main(string[] args) { Console.Write("-->Number of messages to send: "); int messages = Int32.Parse(Console.ReadLine()); Console.WriteLine("\n\t<--Started sending messages!"); for (int i = 0; i < messages; i++) { HandleMessaging.SendMessage <LoanRequest>(Queues.LOANBROKER_IN, new LoanRequest() { Amount = 100, Duration = 12, SSN = "123456-7890" }); Console.WriteLine("\t<--Messages sent: " + (i + 1) + "/" + messages); } Console.WriteLine("\t<--Stopped sending messages!\n"); Console.Write("-->Press [Enter] to start receiving messages."); Console.ReadLine(); Console.WriteLine("\n\t<--Started receiving messages!"); var consumer = HandleMessaging.RecieveMessage(Queues.DELEGATER_OUT, (object model, BasicDeliverEventArgs ea) => { byte[] body = ea.Body; string message = Encoding.UTF8.GetString(body); Console.WriteLine("\t<--Message: " + message + " on queue: " + ea.RoutingKey); }); //Utility.HandleMessaging.SendMessage<LoanRequest>("group1_loanbroker_in", new LoanRequest() { Amount = 100, Duration = 12, SSN = "123456-7890" }); }
static void Main(string[] args) { Console.Title = "Translator JSON"; Console.SetWindowSize(80, 5); string routingKey = LoanBroker.Utility.BankingUtility.ROUTING_KEY_RabbitMQJSONBank; Console.WriteLine("<--Listening for messages on exchange: " + Queues.RULEBASEFETCHER_OUT + " with routing key: " + routingKey); HandleMessaging.RecieveMessage(Queues.RULEBASEFETCHER_OUT, string.Format("QUEUE_{0}", routingKey), routingKey, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on exchange: " + Queues.RULEBASEFETCHER_OUT); LoanRequest loanRequest; loanRequest = JsonConvert.DeserializeObject <LoanRequest>(Encoding.UTF8.GetString(ea.Body)); Console.WriteLine("<--Message content:"); Console.WriteLine("<--" + loanRequest); Console.WriteLine(); handleRabbitMQJSONBank(loanRequest, routingKey); } ); }
public static void Main(string[] args) { Console.Title = "3 - RecipientList"; Console.SetWindowSize(80, 5); Console.WriteLine("<--Listening for messages on queue: " + Queues.BANKFETCHER_OUT); HandleMessaging.RecieveMessage(Queues.BANKFETCHER_OUT, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.BANKFETCHER_OUT); LoanRequest loanRequest; loanRequest = JsonConvert.DeserializeObject <LoanRequest>(Encoding.UTF8.GetString(ea.Body)); Console.WriteLine("<--Message content:"); Console.WriteLine("<--" + loanRequest); Console.WriteLine(); /* * We need Routing: https://www.rabbitmq.com/tutorials/tutorial-four-dotnet.html * That means an Exchange... So new methods to send and recieve.. */ if (loanRequest.Banks != null) { foreach (Bank bank in loanRequest.Banks) { //TDK: is this the best way to do Routing key? I think so. HandleMessaging.SendMessage <LoanRequest>(Queues.RULEBASEFETCHER_OUT, bank.RoutingKey, string.Empty, loanRequest); Console.WriteLine("<--Sending message on exchange: " + Queues.RULEBASEFETCHER_OUT + " with routing key: " + bank.RoutingKey); Console.WriteLine(); } } }); }
public static void Main(string[] args) { Console.Title = "1 - Credit Score Fetcher"; Console.SetWindowSize(80, 5); Console.WriteLine("<--Listening for messages on queue: " + Queues.LOANBROKER_IN); HandleMessaging.RecieveMessage(Queues.LOANBROKER_IN, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.LOANBROKER_IN); LoanRequest loanRequest; CreditScoreService.CreditScoreServiceClient service = new CreditScoreService.CreditScoreServiceClient(); loanRequest = JsonConvert.DeserializeObject <LoanRequest>(Encoding.UTF8.GetString(ea.Body)); Console.WriteLine("<--Message content:"); Console.WriteLine("<--" + loanRequest); loanRequest.CreditScore = service.creditScore(loanRequest.SSN); Console.WriteLine("<--Enriched message content:"); Console.WriteLine("<--" + loanRequest); Console.WriteLine("<--Sending message on queue: " + Queues.CREDITBUREAU_OUT); Console.WriteLine(); HandleMessaging.SendMessage <LoanRequest>(Queues.CREDITBUREAU_OUT, loanRequest); }); }
public static void Main(string[] args) { Console.Title = "RabbitMQJSONBankNormalizer"; Console.SetWindowSize(80, 5); Console.WriteLine("Listening on queue: " + Queues.RABBITMQJSONBANK_OUT); HandleMessaging.RecieveMessage(Queues.RABBITMQJSONBANK_OUT, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.RABBITMQJSONBANK_OUT); LoanResponse loanResponse; JsonBankResponse bankResponse; string msg = Encoding.UTF8.GetString(ea.Body); try { bankResponse = JsonConvert.DeserializeObject <JsonBankResponse>(msg); loanResponse = new LoanResponse() { InterestRate = bankResponse.InterestRate, SSN = bankResponse.SSN, BankName = ea.RoutingKey.Split('_')[1] // Gets the bank name from the queue name }; Console.WriteLine("<--Sending message on queue: " + Queues.NORMALIZER_OUT); Console.WriteLine(); HandleMessaging.SendMessage <LoanResponse>(Queues.NORMALIZER_OUT, loanResponse); } catch (Exception ex) { Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); Console.BackgroundColor = ConsoleColor.Black; /* * String format from pdf: * string msg = "{\"ssn\":" + loanRequest.SSN + ",\"creditScore\":" + loanRequest.CreditScore.ToString() + * ",\"loanAmount\":" + loanRequest.Amount.ToString() + ",\"loanDuration\":" + loanRequest.Duration +" }"; * * but getting this from the bank: * * Exception: Something went wrong.Data should be sent like: { "ssn":1605789787,"loanAmount":10.0,"loanDuration":360,"rki":false} * Can not instantiate value of type[simple type, class dk.cphbusiness.si.banktemplate.JsonDTO.BankLoanDTO] from JSON String; no single-String constructor/factory method * * Gonna send the pdf version, and just catch the exception here... */ } }); }
public static void Main(string[] args) { //A timer to handle timeouts. _timeOut.Interval = TIMEOUT / 10; _timeOut.Enabled = true; _timeOut.Elapsed += _timeOut_Elapsed; Console.Title = "Aggregator"; Console.SetWindowSize(80, 5); Console.WriteLine("Listening on queue: " + Queues.NORMALIZER_OUT); HandleMessaging.RecieveMessage(Queues.NORMALIZER_OUT, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.NORMALIZER_OUT); LoanResponse loanResponse; loanResponse = JsonConvert.DeserializeObject <LoanResponse>(Encoding.UTF8.GetString(ea.Body)); lock (_listLockObject) { if (!_responeList.ContainsKey(loanResponse.SSN)) { // New SSN _responeList.Add(loanResponse.SSN, new Response() { LoanResponses = new List <LoanResponse>() } ); } } if (_responeList.ContainsKey(loanResponse.SSN)) { lock (_listLockObject) { _responeList[loanResponse.SSN].LastResponseTime = DateTime.Now; _responeList[loanResponse.SSN].LoanResponses.Add(loanResponse); } handleListStuff(); } //else // Throw some exception or logit }); }
static void Main(string[] args) { string routingKey = LoanBroker.Utility.BankingUtility.ROUTING_KEY_RabbitMQJSONBank; Console.Title = "RabbitMQJSONBankNormalizer"; //Console.SetWindowSize(80, 5); Console.WriteLine("Listening on queue: " + Queues.RABBITMQJSONBANK_OUT); HandleMessaging.RecieveMessage(Queues.RABBITMQJSONBANK_OUT, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.RABBITMQJSONBANK_OUT); string msgIn = Encoding.UTF8.GetString(ea.Body); Console.WriteLine("Message is: " + msgIn); Console.WriteLine("<--Sending message on queue: " + Queues.NORMALIZER_OUT); Console.WriteLine(); }); /* * String format from pdf: * string msg = "{\"ssn\":" + loanRequest.SSN + ",\"creditScore\":" + loanRequest.CreditScore.ToString() + * ",\"loanAmount\":" + loanRequest.Amount.ToString() + ",\"loanDuration\":" + loanRequest.Duration +" }"; * * but getting this from the bank: * * Exception: Something went wrong.Data should be sent like: { "ssn":1605789787,"loanAmount":10.0,"loanDuration":360,"rki":false} * Can not instantiate value of type[simple type, class dk.cphbusiness.si.banktemplate.JsonDTO.BankLoanDTO] from JSON String; no single-String constructor/factory method * */ //string msg = "{ \"ssn\":1605789787,\"loanAmount\":10.0,\"loanDuration\":360,\"rki\":false}"; string msg = "{ \"ssn\":1605789787,\"creditScore\":598,\"loanAmount\":10.0,\"loanDuration\":360}"; //string msg = "{ \"ssn\":" + loanRequest.SSN // + ",\"loanAmount\":" + loanRequest.Amount.ToString(CultureInfo.CreateSpecificCulture("en-GB")) // + ",\"loanDuration\":" + loanRequest.Duration.ToString() // + ",\"rki\":false }"; //string msg = "{ \"ssn\":" + loanRequest.SSN.Replace("-", "") // + ",\"creditScore\":" + loanRequest.CreditScore.ToString() // + ",\"loanAmount\":" + loanRequest.Amount.ToString(CultureInfo.CreateSpecificCulture("en-GB")) // + ",\"loanDuration\":" + loanRequest.Duration + " }"; Console.WriteLine("--> Sending " + msg + " to cphbusiness.bankJSON"); HandleMessaging.SendMessage("cphbusiness.bankJSON", routingKey, Queues.RABBITMQJSONBANK_OUT, msg, "fanout"); }
public static void Main(string[] args) { Console.Title = "2 - RuleBase Fetcher"; Console.SetWindowSize(80, 5); Console.WriteLine("<--Listening for messages on queue: " + Queues.CREDITBUREAU_OUT); HandleMessaging.RecieveMessage(Queues.CREDITBUREAU_OUT, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.CREDITBUREAU_OUT); LoanRequest loanRequest; loanRequest = JsonConvert.DeserializeObject <LoanRequest>(Encoding.UTF8.GetString(ea.Body)); Console.WriteLine("<--Message content:"); Console.WriteLine("<--" + loanRequest); RuleBaseServiceSoapClient service; ArrayOfString strings; service = new RuleBaseServiceSoapClient(); loanRequest.Banks = new List <Bank>(); strings = service.GetBanks(); foreach (string jSonRepOfBank in strings) { Bank bank; bank = JsonConvert.DeserializeObject <Bank>(jSonRepOfBank); if (loanRequest.CreditScore >= bank.MinCreditScore && loanRequest.CreditScore <= bank.MaxCreditScore && loanRequest.Amount >= bank.MinAmount && loanRequest.Amount <= bank.MaxAmount && loanRequest.Duration >= bank.MinDuration && loanRequest.Duration <= bank.MaxDuration) { loanRequest.Banks.Add(bank); } } Console.WriteLine("<--Enriched message content:"); Console.WriteLine("<--" + loanRequest); Console.WriteLine("<--Sending message on queue: " + Queues.BANKFETCHER_OUT); Console.WriteLine(); HandleMessaging.SendMessage <LoanRequest>(Queues.BANKFETCHER_OUT, loanRequest); }); }
static void Main(string[] args) { Console.Title = "RabbitMQBank"; Console.SetWindowPosition(0, 0); Console.SetWindowSize(80, 5); Console.WriteLine("<--Listening for messages on queue: " + Queues.RABBITMQOURBANK_IN); HandleMessaging.RecieveMessage(Queues.RABBITMQOURBANK_IN, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.RABBITMQOURBANK_IN); byte[] inBody = ea.Body; string message = Encoding.UTF8.GetString(inBody); Console.WriteLine("<--Message content:"); Console.WriteLine("<--" + message); //SSN;CreditScore;Amount;Duration message = message.Replace("\"", ""); string[] parts = message.Split(';'); string ssn = parts[0]; int creditScore = 0; int.TryParse(parts[1], out creditScore); decimal amount = 0; decimal.TryParse(parts[2], out amount); int duration = 0; int.TryParse(parts[3], out duration); LoanBroker.model.LoanResponse loanResponse = new LoanBroker.model.LoanResponse() { InterestRate = BankingUtility.ProcessLoanRequest(ssn, creditScore, amount, duration), BankName = "Our RabbitMQ Bank", SSN = ssn }; //decimal sendMessage = BankingUtility.ProcessLoanRequest(ssn, creditScore, amount, duration); string msg = JsonConvert.SerializeObject(loanResponse); Console.WriteLine("<--Sending message on queue: " + Queues.RABBITMQOURBANK_OUT + " > " + msg); Console.WriteLine(); HandleMessaging.SendMessage <LoanBroker.model.LoanResponse>(Queues.RABBITMQOURBANK_OUT, loanResponse); }); }
public static void Main(string[] args) { Console.Title = "RabbitMQOurBankNormalizer"; Console.SetWindowSize(80, 5); HandleMessaging.RecieveMessage(Queues.RABBITMQOURBANK_OUT, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.RABBITMQOURBANK_OUT); LoanResponse loanResponse; string s = Encoding.UTF8.GetString(ea.Body); //TODO: TDK: Error here.. Gets a loan request and not a ourbankresponse loanResponse = JsonConvert.DeserializeObject <LoanResponse>(Encoding.UTF8.GetString(ea.Body)); Console.WriteLine("<--Sending message on queue: " + Queues.NORMALIZER_OUT); Console.WriteLine(); HandleMessaging.SendMessage <LoanResponse>(Queues.NORMALIZER_OUT, loanResponse); }); }
public static void Main(string[] args) { Console.Title = "RabbitMQXMLBankNormalizer"; Console.SetWindowSize(80, 5); HandleMessaging.RecieveMessage(Queues.RABBITMQXMLBANK_OUT, (object model, BasicDeliverEventArgs ea) => { Console.WriteLine("<--Message recieved on queue: " + Queues.RABBITMQXMLBANK_OUT); try { LoanResponse loanResponse; XMLBankResponse bankResponse; System.Xml.Serialization.XmlSerializer serializer; serializer = new System.Xml.Serialization.XmlSerializer(typeof(XMLBankResponse)); using (TextReader reader = new StringReader(Encoding.UTF8.GetString(ea.Body))) { bankResponse = serializer.Deserialize(reader) as XMLBankResponse; loanResponse = new LoanResponse() { InterestRate = bankResponse.InterestRate, SSN = bankResponse.SSN, BankName = ea.RoutingKey.Split('_')[1] // Gets the bank name from the queue name }; } Console.WriteLine("<--Sending message on queue: " + Queues.NORMALIZER_OUT); Console.WriteLine(); HandleMessaging.SendMessage <LoanResponse>(Queues.NORMALIZER_OUT, loanResponse); } catch (Exception ex) { Console.BackgroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); Console.BackgroundColor = ConsoleColor.Black; } }); }