using PARR.MockData.Data; using RabbitMQ.Client; using System.Text; var factory = new ConnectionFactory() { HostName = "10.99.253.216" }; factory.UserName = "rmuser"; factory.Password = "rmpassword"; string[] rows = EsppExport.data.Replace("\r", "").Split('\n'); using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { //https://www.rabbitmq.com/lazy-queues.html //Рекомендовано при работе порциями использовать ленивые очереди. сообщения не используют память //Формируем соответствующий аргумент Dictionary argums = new Dictionary(); argums.Add("x-queue-mode", "lazy"); //Объявляем очередь с которой будем работать. Если такой очереди ещё нет, то создатся. Если нет, нужно параметры типа durable должны совпадать иначе будет ошибка. В целом эти параметры можно посмотреть в админке RabbitMQ channel.QueueDeclare(queue: "parr-espp-templates", durable: true,//If you want to make sure your messages are persisted, you need to create a durable queue. To do this, simply set the durable flag to true when creating the queue. exclusive: false, autoDelete: false, arguments: argums); //перебираем строки и отправляем строки сообщениями for (int i = 0; i < rows.Count(); i++) { var body = Encoding.UTF8.GetBytes(rows[i]); IBasicProperties props = channel.CreateBasicProperties(); //If you don’t mark your messages as persistent, then RabbitMQ will store them in memory. This is fine if you’re just playing around or building a prototype. But if you’re building a production system, then you need to make sure that your messages are persisted to disk so that they’re not lost if the server crashes. //Говорим менеджеру RabbitMq при получении хранить сообщения на диске props.DeliveryMode = 2; //время жизни в мс. на этапе отладки сделаем коротким чтобы не устраивать помойку props.Expiration = "60000"; channel.BasicPublish(exchange: "", routingKey: "parr-espp-templates",//совпадает с именем очереди иначе не принимает basicProperties: props, body: body); } }