Con la entrada del nuevo año ya falta menos para tener la versión definitiva de NServiceBus 3.0. Esta versión traerá un gran número de nuevas funcionalidades. Entre ellas:
- Integración de RavenDB para la persistencia de Sagas y almacenamiento de la información de subscripciones.
- Soporte para Azure.
- Transportar grandes cantidades de datos gracias al DataBus.
- Una configuración mucho más sencilla y no intrusiva.
Podéis leer un resumen de estas funcionalidades y descargar la beta desde aquí: http://www.nservicebus.com/NServiceBusV3NewFeatures.aspx
En este post hablaremos de los MessageMutators, una nueva funcionalidad que actúa como interceptores de los mensajes al llegar y/o al salir de nuestro endpoint. Así, podemos ejecutar transformaciones a nuestros mensajes de forma dinámica.
Tenemos dos tipos de MessageMutators:
- IMessageMutator: Esta interfaz nos permite ejecutar cualquier acción sobre un mensaje en concreto.
- IMutateTransportMessages: Esta interfaz se diferencia de la anterior en que aplicamos las acciones sobre un TransportMessage, este puede contener múltiples mensajes. Realmente, estos conceptos son más difíciles de explicar que de implementar. Por eso, vamos a amenizar el artículo mediante un ejemplo.
Tenemos el siguiente mensaje, muy simple:
|
|
Utilizaremos un interceptor para encriptar los mensajes antes de salir del endpoint y desencriptarlos al entrar:
|
|
Y finalmente lo registramos mediante el contenedor de IoC de NServiceBus.
|
|
Ahora solo falta referenciarlo desde los proyectos cliente y servidor y cuando enviemos un mensaje, estos serán encriptados al enviar y desencriptados al recibir.
Tal y como podemos ver en la imagen: sin aplicar el MessageMutator y aplicándolo.
El ejemplo puede descargarse de: https://github.com/mserrate/NServiceBus.Samples