/// <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(); } } }