示例#1
0
 public void OnMensajeRecibido(CondicionesMensaje c)
 {
     if (MensajeRecibidoEvento != null)
     {
         MensajeRecibidoEvento(c);
     }
 }
示例#2
0
        public async Task <string> ConvertirMensaje(CondicionesMensaje condicionesMensaje)
        {
            string mensaje = string.Empty;

            switch (condicionesMensaje.TipoConversionMensaje)
            {
            case EnumeradosTraductor.TipoConversionMensaje.Cifrar:
            {
                mensaje = TraductorMensajeHelper.TraducirMensajeDecodificado(condicionesMensaje.MessageText);
            }
            break;

            case EnumeradosTraductor.TipoConversionMensaje.Decifrar:
            {
                mensaje = TraductorMensajeHelper.TraducirMensajeCodificado(condicionesMensaje.MessageText);
            }
            break;

            case EnumeradosTraductor.TipoConversionMensaje.Nada:
            {
                mensaje = condicionesMensaje.MessageText;
            }
            break;
            }

            return(mensaje);
        }
示例#3
0
        public void OnMensajeRecibido(CondicionesMensaje condicionesMensaje)
        {
            try
            {
                EmitirMensajeActiveMQAsync(condicionesMensaje).Wait();

                condicionesMensaje.Message.Acknowledge();///Reconocimiento
            }
            catch (Exception ex)
            {
                Log.Error(ex, Constantes.MsgLog.ERRORMETODO, nameof(OnMensajeRecibido));
                throw ex;
            }
        }
示例#4
0
        private async Task EmitirMensajeActiveMQAsync(CondicionesMensaje condicionesMensaje)
        {
            try
            {
                switch (condicionesMensaje.DireccionMensaje)
                {
                case EnumeradosTraductor.DireccionMensaje.DispositivosBorde_A_SistemaCentral:
                {
                    string mensajeConvertido = await ConvertirMensaje(condicionesMensaje);

                    await _emisor.EmitirMensajeActiveMQAsync(
                        mensajeConvertido,
                        _configuration.GetValue <string>("ActiveMQ:QueueName_Cifrado")
                        , condicionesMensaje.DispositivoId
                        );
                }
                break;

                case EnumeradosTraductor.DireccionMensaje.SistemaCentral_A_DispositivosBorde:
                {
                    ///Si el mensaje es vacio fue porque la tarea de CrearColasDispositivos creó un mensaje vacio.
                    ///No se debe emitir el mensaje vacio.
                    if (!string.IsNullOrEmpty(condicionesMensaje.MessageText))
                    {
                        string mensajeConvertido = await ConvertirMensaje(condicionesMensaje);

                        string queueNameDispo = string.Format(Constantes.QueueNameDispositivo.QUEUENAMEDISPFORMATO_SINCIFRAR, condicionesMensaje.QueueName);

                        await _emisor.EmitirMensajeActiveMQAsync(
                            mensajeConvertido,
                            queueNameDispo
                            );
                    }
                }
                break;
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, Constantes.MsgLog.ERRORMETODO, nameof(EmitirMensajeActiveMQAsync));
            }
        }
示例#5
0
        /// <summary>
        /// Obtiene el ultimo mensaje encolado del MOM.
        /// </summary>
        /// <returns>Mensaje en cadena.</returns>
        public async Task RecibirMensajeActiveMQAsync(List <string> queueNameOrigenes,
                                                      EnumeradosTraductor.DireccionMensaje direccion,
                                                      EnumeradosTraductor.TipoConversionMensaje tipo)
        {
            try
            {
                string _queueName = string.Empty;
                CrearConexion(ServidorBrokerUri, AcknowledgementMode.ClientAcknowledge);
                _queueName = queueNameOrigenes[0];

                IDestination dest = SessionUtil.GetDestination(Session, QueueName);
                using (IMessageConsumer consumer = Session.CreateConsumer(dest))
                {
                    IMessage message;
                    message = consumer.Receive(TimeSpan.FromSeconds(TiempoEsperaRecepcionMensaje));
                    if (message != null)
                    {
                        CondicionesMensaje condicionesMensaje = new CondicionesMensaje(
                            message,
                            direccion,
                            tipo,
                            _queueName);

                        OnMensajeRecibido(condicionesMensaje);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, Constantes.MsgLog.ERRORMETODO, nameof(RecibirMensajeActiveMQAsync));
                throw ex;
            }
            finally
            {
                if (Connection != null)
                {
                    Connection.Close();
                }
            }
        }
示例#6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="stoppingToken"></param>
        /// <param name="queueNameOrigenes"></param>
        /// <param name="direccion"></param>
        /// <param name="tipo"></param>
        /// <returns></returns>
        public async Task TareaRecibirMensajesActiveMQAsync(CancellationToken stoppingToken,
                                                            List <string> queueNameOrigenes,
                                                            EnumeradosTraductor.DireccionMensaje direccion,
                                                            EnumeradosTraductor.TipoConversionMensaje tipo)
        {
            try
            {
                string _queueName = string.Empty;
                CrearConexion(ServidorBrokerUri, AcknowledgementMode.DupsOkAcknowledge);

                int      _contadorDispositivos = 0;
                IMessage message;
                while (!stoppingToken.IsCancellationRequested)///Determinar rompimiento del ciclo
                {
                    try
                    {
                        if (queueNameOrigenes.Count <= _contadorDispositivos)
                        {
                            _contadorDispositivos = 0;
                        }

                        _queueName = queueNameOrigenes[_contadorDispositivos];

                        IDestination dest = SessionUtil.GetDestination(Session, _queueName);
                        using (IMessageConsumer consumer = Session.CreateConsumer(dest))
                        {
                            message = consumer.Receive(TimeSpan.FromMilliseconds(TiempoEsperaRecepcionMensaje));
                            if (message != null)
                            {
                                CondicionesMensaje condicionesMensaje = new CondicionesMensaje(
                                    message,
                                    direccion,
                                    tipo,
                                    _queueName
                                    );

                                OnMensajeRecibido(condicionesMensaje);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex, string.Format(Constantes.MsgLog.ERRORMETODO, nameof(RecibirMensajeActiveMQAsync), _queueName));
                    }
                    _queueName = string.Empty;
                    _contadorDispositivos++;
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, Constantes.MsgLog.ERRORMETODO, nameof(RecibirMensajeActiveMQAsync));
                throw ex;
            }
            finally
            {
                if (Connection != null)
                {
                    Connection.Close();
                }
            }
        }