NServiceBus 3.0 – Distributor

En las últimas entradas estamos repasando las novedades de NServiceBus 3.0 que ya está en la Release Candidate 2. En esta entrada veremos una funcionalidad que ya existía en versiones anteriores pero que se ha rehecho completamente.

Distributor nos permite balancear la carga entre varios nodos a partir de un nodo maestro. La configuración del nodo maestro es muy sencilla a través de los profiles de NServiceBus, simplemente debemos añadir el argumento NServiceBus.Master en el Host. Para asegurar la alta disponibilidad del nodo maestro es recomendable que se ejecute en un cluster.

Para configurar los nodos worker, añadiremos a su vez el argumento NServiceBus.Worker para establecer este comportamiento.

El funcionamiento o flujo de trabajo es el siguiente:

  1. Los nodos worker envían un mensaje a [endpoint].distributor.control cada vez que están libres.
  2. El nodo Master procesa la cola guardando todos los nodos workers disponibles en la cola [endpoint].distributor.storage.
  3. Cuando el nodo Master recibe un mensaje utiliza el primer worker de la lista de [endpoint].distributor.storage para enviarle el mensaje y que lo procese. (more…)

Read More

NServiceBus 3.0 – Data Bus

Siempre que usemos algún sistema de mensajería tenemos que adaptarnos al límite de tamaño del mensaje que el sistema es capaz de enviar. Este límite varía dependiendo de la tecnología usada.

En la mayoría de sistemas on-premise no hay mucho problema ya que el tamaño acostumbra a ser suficiente para la mayoría de casos. Por ejemplo, en MSMQ – el transporte por defecto en NServiceBus – el límite es de 4MB.

En sistemas en la nube este límite es notablemente inferior. Algunos ejemplos:

  • Azure Queues: 8KB
  • Azure Service Bus Queues: 64KB
  • Amazon SQS: 64KB

En aquellos casos en los que se requiera un límite mayor ya sea porqué usamos NServiceBus en Azure o bien porqué queremos enviar algún dato de gran tamaño como una imagen o video, podemos hacer uso de la propiedad DataBusProperty<T>. (more…)

Read More

NServiceBus 3.0 – Message Mutators

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. (more…)

Read More