protected override void OnReceive(object message) { switch (message) { case CalculateSingleTechnicalIndicatorRequest req: try { _obtainedSignals = _indicator.GetSignals(req.Quotes, req.Parameters); } catch (Exception e) { Console.WriteLine(_indicator.GetType() + "Actor terminated due to exception."); Sender.Tell("ErrorDuringCalculation"); Context.Stop(Self); break; } Sender.Tell(new SaveObtainedSignalsRequest(_obtainedSignals)); break; case "GetObtainedSignalsRequest": Sender.Tell(new SaveObtainedSignalsRequest(_obtainedSignals)); break; } }
public override void HandleReceivedEvent(BasicDeliverEventArgs ea, IModel channel) { var indicatorElements = JsonSerializer.JsonStringToObjectType <IndicatorCalculationElements>(EncryptionHelper.ByteArrayToUTF8String(ea.Body)); List <Signal> obtainedSignals = null; try { obtainedSignals = _indicator.GetSignals(indicatorElements.Quotes, indicatorElements.Parameters); Console.WriteLine("RabbitMQ Consumer calculated Technical Indicator."); } catch (Exception e) { Console.WriteLine("RabbitMQ Consumer got an Exception during indicator calculation."); obtainedSignals = new List <Signal>(); } channel.BasicAck(ea.DeliveryTag, false); GenerateAndPublishMessage(channel, obtainedSignals); }