using PublishSubscribe;

var rabbitHost = Environment.GetEnvironmentVariable("RABBIT_HOST") ?? "localhost";
var rabbitUsername = Environment.GetEnvironmentVariable("RABBIT_USERNAME") ?? "user";
var rabbitPassword = Environment.GetEnvironmentVariable("RABBIT_PASSWORD") ?? "password";
var rabbitExchange = Environment.GetEnvironmentVariable("RABBIT_EXCHANGE") ?? "SorterIn";
var rabbitQueue = Environment.GetEnvironmentVariable("RABBIT_QUEUE") ?? "SorterFirst";
var HasDelay = bool.Parse(Environment.GetEnvironmentVariable("HAS_DELAY") ?? "false");

Thread.Sleep(2000);

var Receiver = new ExchangeReceiver(rabbitHost, rabbitUsername, rabbitPassword);

Receiver.SubscribeTo(rabbitExchange, (message) =>
{
    var rnd = new Random();

    var messageData = message.Split("|");

    Console.WriteLine($"[<-]\tПришло сообщение\tId:{messageData[0]}\tType:{messageData[2]}\t Data:{string.Join(";", messageData.Skip(3))}");

    if (HasDelay)
    {
        Thread.Sleep(rnd.Next(2000, 3000));
        Console.WriteLine($"[\\/]\tОбработка сообщения {messageData[0]} завершена");
    }
    else
    {
        Console.WriteLine($"[\\/]\tСообщение {messageData[0]} обрабатывается мгновенно");
    }

},
rabbitQueue);

while (true) ;