public void SendQuotesToCalculationInConsumer(List <Quote> quotes, Parameters parameters,
                                                      string exchange, string queueSendTo)
        {
            IndicatorCalculationElements elements = new IndicatorCalculationElements
            {
                Quotes     = quotes,
                Parameters = parameters
            };

            InitializeProducer(exchange, queueSendTo);
            _producer.Process(elements);
        }
        public override void GenerateAndPublishMessage(IModel channel, IndicatorCalculationElements indicatorElements)
        {
            //serializujemy oraz przekształcamy w tablicę bajtów
            var body = EncryptionHelper.StringToUtf8(JsonSerializer.ConvertObjectToJsonString <IndicatorCalculationElements>(indicatorElements));

            channel.BasicPublish(exchange: _exchange,
                                 routingKey: _queueSendTo,
                                 basicProperties: null,
                                 body: body);
            //oczekujemy na potwierdzenie, że przesyłka dotarła do exchange
            channel.WaitForConfirmsOrDie();
            Console.WriteLine($"RabbitMQ Producer sent quotes to Consumers.");
        }
        public override void Process(IndicatorCalculationElements elements)
        {
            try
            {
                using (var connection = RabbitMQConnectionHelper.GetConnection())
                {
                    using (var channel = connection.CreateModel())
                    {
                        //umożliwia potwierdzanie, że przesyłkę dostarczono do Exchange
                        channel.ConfirmSelect();

                        //generujemy nową wiadomość
                        GenerateAndPublishMessage(channel, elements);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw e;
            }
        }
 public abstract void GenerateAndPublishMessage(IModel channel, IndicatorCalculationElements elements);
 public abstract void Process(IndicatorCalculationElements elements);