public void Send(string message) { using var connection = _factory.CreateConnection(); using IModel channel = connection.CreateModel(); DeclareQueues(channel, FromServer, ToServer); /* Две задачи: * 1) подписаться на FromServer, и, когда придет rsa, зашифровать им des, и отправить результат в очередь ToServer * 2) зашифровать данные и положить их в очередь ToServer */ // 1 задача var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => { var rsa = ea.Body.ToArray(); var publicRSA = Cryptographer.GetRSAFromBytes(rsa); var encryptedDES = Cryptographer.EncryptDesByRSA(publicRSA, _des); Send(channel, encryptedDES); _isDesSended = true; }; channel.BasicConsume( queue: FromServer, autoAck: true, consumer: consumer); // 2 задача while (!_isDesSended) { ; } var body = Cryptographer.SymmetricEncrypt(message, _des); Send(channel, body); }