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(); }
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(); }
private void SaveJobStatus(string jobFromMessage) { ExpandoObject toPersist = JobSerialization.Deserialize(jobFromMessage); persistance.SavePrinting(toPersist); }