Azure Service Bus : Queues Brokered Messages – II

Siguiendo con la entrada anterior en la que empezábamos haciendo un pequeño repaso al API de service bus en .NET y el de las novedades sobre Queues y brokered messages, hablaremos sobre una de esas características que nos pueden ser de una extrema utilidad en ciertas ocasiones. Me refiero a la capacidad de detectar duplicados de mensajes. 

Para intentar explicar mejor el porque de esta excelente característica pensemos en el siguiente ejemplo. Tenemos un sistema que nos permite monitorizar los contadores de rendimiento de un determinado equipo, de tal forma que, cuando un contador de rendimiento, por ejemplo uso de CPU, supera un valor dado, este sistema incluye en una cola de Service Bus un mensaje de alerta. Lógicamente, dispondremos de una pieza leyendo estos mensajes de alertar para, por ejemplo, enviar un correo notificando el problema. Dado este ejemplo, seguro que se dará cuenta de que podemos tener un problema y es que, si por ejemplo un equipo hace un uso intensivo de CPU lo hará por un tiempo determinado no en un solo instante. Por eso, si nuestro sistema de monitorización lee el valor de contador cada poco tiempo podríamos “inundar”  el sistema de alarmas. Para evitar este problema, técnicamente conocido como flooding, podríamos tratar de utilizar la técnica anterior, haciendo que todas los mensajes iguales en la cola durante un determinado periodo se consideraran duplicados y por lo tanto se eliminaran automáticamente.

 

Configuración de la cola

Para poder utilizar la característica de duplicaciones lo primero que tenemos que hacer es disponer de una cola que soporte esta característica, a continuación, en las siguientes lineas de código podemos ver un ejemplo de creación y setup de una cola, fíjese en las propiedades RequiresDuplicateDetection y DuplicateDetectionHistoryTimeWindow.

 

El trabajo

Bien, ahora que tenemos creada una cola con soporte para la detección de duplicados, la pregunta es : ¿ cómo interpreta Service Bus que dos mensajes son iguales ? Pues bien, la respuesta es mediante la propiedad MessageId de nuestra clase BrokeredMessage. Si, probablemente a todos nos gustaría poder utilizar algún sistema más sotisficado, o cuanto menos, algún sistema personalizable para realizar esta tarea pero desgraciadamente no parece existir. Si nos fueramos al ejemplo comentado anteriormente, no nos quedaría mas remedio que todas las alertas de un contador ( hablamos de CPU en el ejemplo ) tuvieran un mismo identificador. En el siguiente ejemplo vemos unas pequeñas lineas, a modo demostrativo, el envío de un nuevo mensage con su identificador establecido, de acuerdo a nuestro ejemplo:

Bueno, hasta aquí ha llegado esta pequeña entrada. Espero que os resulte de interés.

Saludos

unai

2 comentarios en “Azure Service Bus : Queues Brokered Messages – II”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *