Aplicar el patrón Retry en una Queue de Azure Storage

ic709509

Estoy preparando un MOC de desarrollo en Azure, que imparto en CB Center Training, y estoy aprovechando para aplicar patrones de diseño Cloud.

En la pequeña demostración de integración con un servicio Queue (listas de mensajes) de una suscripción de almacenamiento de Azure, estoy utilizando un sistema de mensajería. Pero quiero añadirle la aplicación del patrón de Retry, que me parece muy oportuno en este caso.

Lo curioso es que no he encontrado ningún ejemplo y por eso me lo apunto en el blog.

El código original que hace una petición a una cola para recuperar un mensaje es:


private static void MuestraMensaje(CloudQueue cola)
{
var resultado = cola.GetMessage();
Console.WriteLine(resultado.AsString);
}

Sin embargo si le quiero aplicar una política de reintentos, la cosa se complica un poquito… pero no mucho.


private static void MuestraMensaje(CloudQueue cola)
{
//Le estoy aplicando el patrón Retry...
var resultado = cola.GetMessage(null, new QueueRequestOptions {RetryPolicy = new LinearRetry(new TimeSpan(0,0,30),5) });
Console.WriteLine(resultado.AsString);
}

Como ves, la sobrecarga de GetMessage es diferente.


GetMessage(null, new QueueRequestOptions {RetryPolicy = new LinearRetry(new TimeSpan(0,0,30),5) });

El primer parámetro está puesto a null, para indicarle que utilice el tiempo por defecto de la visibilidad del mensaje. Pero es el segundo, las opciones del Request, el que me permite añadir una política de Retry.

Entonces, creo una nueva instancia de QueueRequestOptions, y le añado directamente las propiedades. La que voy a utilizar es RetryPolicy que es una nueva instancia de la clase LinearRetry, que a su vez tiene dos parámetros.

El primero es un TimeSpan, en este caso de 5 segundos, que configura el tiempo entre cada reintento, y el segundo es un entero que indica cuantas veces lo va a reintentar hasta considerarse un fallo.

Y con esta simple linea, he añadido un patrón Retry a mis operaciones de mensajería.

Anuncios

Un comentario en “Aplicar el patrón Retry en una Queue de Azure Storage

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s