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;
            }
        }
Esempio n. 2
0
        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);
        }