public void OnMensajeRecibido(CondicionesMensaje c) { if (MensajeRecibidoEvento != null) { MensajeRecibidoEvento(c); } }
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); }
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; } }
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)); } }
/// <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(); } } }
/// <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(); } } }