Ejemplo n.º 1
0
        public void sendToQueue(DataMensaje m)
        {
            ConnectionFactory factory = new ConnectionFactory();
            factory.Uri = "amqp://*****:*****@black-boar.rmq.cloudamqp.com/zquztoqc";
            IConnection conn = factory.CreateConnection();
            Console.WriteLine("Connection Created...");

            IModel model = conn.CreateModel();
            var serialized = JsonConvert.SerializeObject(m);
            byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes(serialized);
            IBasicProperties props = model.CreateBasicProperties();
            props.ContentType = "application/json";
            //props.Expiration = "5000";
            //props.DeliveryMode = 2;

            /*Delayed queue*/
            string queue = "sarem.wait";
            if (m.inmediato)
                queue = "sarem";
            else
            {
                long milis = (long)(m.fecha_envio - DateTime.UtcNow).TotalMilliseconds;
                Console.WriteLine("Tiempo en milis" + milis.ToString());
                props.Expiration = milis.ToString();//"5000";
            }

            Console.WriteLine("Sending...");
            model.BasicPublish("",
                              queue, props,
                              messageBodyBytes);
            Console.WriteLine("Message send..");
            model.Close(200, "Goodbye");
            conn.Close();
        }
Ejemplo n.º 2
0
        public void enviarMensajeAlertaConsulta(string pacienteID, long eventoID, DateTime fecha)
        {
            Console.WriteLine("enviarMensajeAlertaConsulta...");
            using (var db = SARMContext.getTenant(tenant))
            {
                var epc = (from c in db.eventopacientecomunicacion.Include("paciente")
                           where c.EventoID==eventoID && c.PacienteID==pacienteID
                           select c
                    );

                IDALAMQP iamqp = new DALAMQP(tenant);
                foreach (var e in epc)
                {
                    Console.WriteLine("recorriendo medios...");
                    switch (e.ComunicacionID)
                    {
                        case 1: //mail
                            var dm = new DataMensaje
                            {
                                medio = e.ComunicacionID,
                                destinatario = e.paciente.mail,
                                asunto = "Consulta agendada",
                                mensaje = "Tiene una consulta agendada para el dia " + fecha.ToString(),
                                fecha_envio = fecha,
                                inmediato = false
                            };
                            iamqp.sendToQueue(dm);
                            break;

                        default:
                            Console.WriteLine("No se envia mensaje");
                            break;
                    }

                }
            }
        }