Commands y Windows Azure ServiceBus

Bueno, un post pequeñito pequeñito, más que nada y para ser sincero, para cambiar un poco de tercio, pero que espero que os resulte interesante. Hace ya bastante tiempo, los pocos que leéis mi aburrido blog, escribí acerca de eventos de dominio y agregados. En esta ocasión me gustaría hablar de comandos y de alguna pequeña ayuda que el nuevo SDK de Azure nos trae para implementaciones de nuestros manejadores. Si bien, comandos y eventos, en realidad son cuestiones semánticas y poco más, uno en pasado, otro acción, receptores y poco más  la verdad es que su implementación se parece muchísimo, puesto que en ambos tenemos un consumidor ( o N en realidad )  capaz de despachar acciones, la información del evento producido o el comando ejecutado. La implementación de estos despachadores ( que feo.. ) suele ser más o menos sencilla cuando estamos modelando nuestro sistema pero en realidad, a la hora de ir a un sistema real el tema se complica y muchas veces se acaba por utilizar algunas buenas piezas ya construidas como puede ser NServiceBus de Udi Dahan.

 

Nota: Para los que os interese NServiceBus y todo lo relacionado con este bloque de código os recomiendo el blog de MarÇel Serrate.

 

Pues bien, la nueva versión del SDK de Azure, SDK 2.0, incluye una pequeñita mejora en el procesado de mensajes de una cola, habitual para la implementación de un dispatcher de comandos y eventos, de tal forma que el patrón de recepción y vuelta a escuchar de los mensajes en nuestra cola se simplifique muchísimo introduciendo un patrón de eventos. Concrétamente veremos que el API cliente para manejar nuestras colas dispone de un nuevo método OnMessage con el que podremos especificar  donde haremos el procesado de los mensajes y el establecimiento de diferentes opciones como el auto completado de los mensajes, el número máximo  de llamadas concurrentes y/o el método a utilizar para manejar excepciones que se produzcan en la recepción de los mensajes. Un ejemplo trivial de esto podría ser:

 

 

Ahora, solamente necesitaríamos nuestro método de manejo, OnMessageArrived, dónde pondríamos la lógica de tratamiento de estos comandos/eventos para asignárselos a sus correspondientes manejadores.

 

 

Sencillo, ¿verdad?… Bueno, ya os dije que sería una entrada cortita…

 

Unai

Deja un comentario

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