Exemple #1
0
        public void SendToQueue(Payload doc)
        {
            using IConnection connection = factory.CreateConnection();
            using IModel channel         = connection.CreateModel();
            channel.QueueDeclare(queue: PrintingJobsQueue.QueueName,
                                 durable: PrintingJobsQueue.Durable,
                                 exclusive: PrintingJobsQueue.Exclusive,
                                 autoDelete: PrintingJobsQueue.AutoDelete,
                                 arguments: PrintingJobsQueue.Arguments);

            string message = JobSerialization.Serialize(
                new PrintRequest()
            {
                DocumentName = doc.Path, SentDate = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss")
            }
                );

            byte[] body = Encoding.UTF8.GetBytes(message);

            IBasicProperties properties = channel.CreateBasicProperties();

            properties.Priority = Convert.ToByte(doc.Priority);

            channel.BasicPublish(exchange: "",
                                 routingKey: PrintingJobsQueue.QueueName,
                                 basicProperties: properties,
                                 body: body);

            channel.Close();
            connection.Close();
        }
Exemple #2
0
        private void Print(string doc)
        {
            int    delay = rnd.Next(1000, 3500);
            Thread t     = new Thread(
                () =>
            {
                Thread.Sleep(delay);
                ExpandoObject printRequest = JobSerialization.Deserialize(doc);
                printRequest.TryAdd("PrintDate", DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss"));
                notifier.SendToQueue(JobSerialization.Serialize(printRequest));
            }
                );

            t.Start();
        }
Exemple #3
0
        private void SaveJobStatus(string jobFromMessage)
        {
            ExpandoObject toPersist = JobSerialization.Deserialize(jobFromMessage);

            persistance.SavePrinting(toPersist);
        }