Ibus Service Manager

 

El IBusServiceManager es un servicio windows desarrollado en Argentina e implementado por Ecuador y Colombia, el cual nos permite ejecutar diferentes tareas como servicios(Workers), siendo el IBus Service el orquestador de estos.

Creación de Colas

El IBus Service Manager permite realizar la gestión de los mensajes en colas de windows, el procesamiento de los mensajes se realiza por medio de workers (aplicativos de biblioteca de clases de c#). Para crear las colas abriremos "Administración de equipos" de windows:





En la sección de servicios y aplicaciones -> Message Queue Server -> Colas privadas:

Le daremos clic derecho en colas privadas -> Nuevo -> Cola Privada


 









Nos aparecerá un cuadro de dialogo donde podremos escribir el nombre de la cola, adicionalmente siempre hay que seleccionar el checkbox "Transaccional" como se indica en la imagen de la derecha.








Después de creada la cola esta aparecerá en el listado de colas de "Colas Privadas".


Es muy importante después de su creación otorgarle todos los permisos a la nueva cola, esto se realiza dando clic derecho sobre la nueva cola -> Propiedades, en la pestaña de seguridad seleccionar todos y en el cuadro inferior marcar el checkbox de "Control Total" sobre la columna "Permitir".




Esto terminara el procedo de creación de colas.










Instalación del IBus Service Manager

El IBus Service Manager tiene un instalador, el cual nos guiara en el proceso para instalar el servicio que orquestara nuestro workers, al ejecutarlo podremos ver lo siguiente: 











Al continuar el siguiente paso de la instalación, configuraremos dos items:

1. El nombre del servicio para ubicarlo en los "Servicios de Windows" y

2. La descripción del servicio (Para términos informativos para los administradores del sistema) 










Después de realizar la configuración en la siguiente pantalla nos pedirá la ruta de instalación del IBus Service Manager. Tener presente que en esta ruta tendremos las dll de todos los workers que desarrollemos así mismo el archivo .config donde estarán las configuraciones de nuestros workers.








Después de instalado el servicio, podremos observarlo en los "Servicios" de windows.




En la ruta de instalación se crean los siguientes archivos:



De los archivos listados se debe resaltar:

  • uninst.exe -> Ejecutable para desinstalar el servicio.
  • IBus.ServicesManager.Service.InstallLog -> Log de la instalación.
  • IBus.ServicesManager.dll -> Esta dll debe ser agregada como referencia de todos los proyectos workers.
  • IBus.ServicesManager.Service.exe.config -> En este archivo de configuración deben ir referenciadas todas las configuraciones de cada uno de nuestros workers.
  • IMPORTANTE otorgarle al directorio de instalación permisos de control total.








IBus Service Manager en C#

Antes de realizar la implementación del IBus Service Manager, los proyectos que utilicen la librería  IBus.ServicesManager.dll  deben tener una versión de .Net Framework 4.0 o superior.

EL worker sera la clase de C# que implementara el IBus Service Manager, implementara la

interfaz  IBus.ServicesManager.Workers.Worker , al realizar la implementación de esta se creara el método:


public override void DoWork(string resourceId, object data)

{

     try

     {

En la siguiente linea se captura el mensaje de la cola utilizando  System.Messaging,  el mensaje de la cola se caracterizara por tener dos propiedades principales:

  • Body correspondiente al cuerpo del mensaje, de tipo  object   para mapearse al objeto esperadoLabel sera una etiqueta proporcionada a la hora de enviar el mensaje a la cola.

Message Mensaje = (Message)data;

Después de realizar la captura del mensaje se procede a realizar el tratamiento deseado de este

               miproyecto.mifuncionalidad.Procesar(Mensaje.Body.ToString());

     }

     catch (Exception ex)

     {

En caso de una excepción los eventos se escribirán en el log de aplicaciones de windows, de esta forma se podrán visualizar por medio del visor de eventos de windows. Sin embargo se puede realizar el tratamiento de la excepción a considerar.

           EventLog.WriteEntry("sm.test-error", ex.ToString(), EventLogEntryType.Error);

          throw;

     }

}

Para enviar un mensaje a una cola de windows se utiliza la librería  Common.dll  ubicada en el directorio de instalación del IBus Service Manager utilizando la clase  MessageQueueHelper,  recibiendo los siguiente paramentros:

  • Ruta de la cola, ejemplo  .\\private$\\sm_test  de tipo  string.
  • De tipo  string Label  del mensaje.
  • Contenido del mensaje correspondiente al  Body  de tipo  string.
  • Tamaño máximo del mensaje, siendo el máximo soportado al rededor de 4MB.
  • applicationId.
  • companyId.
  • De tipo  bool  s i el mensaje sera comprimido, true  si lo es, de lo contrario  false.
  • De tipo  bool  si el mensaje sera cifrado,  true  si lo es, de lo contrario  false.

Después de realizar la culminación de nuestro worker su implementación es sencilla, solo se debe realizar su compilación en modo Release y copiar y pegar el contenido de la Release en el directorio de instalación del IBus Service Manager a excepción de los archivos  .config, para estos últimos se debe copiar manualmente las configuraciones dentro del documento IBus.ServicesManager.Service.exe.config.

Configuración de colas en el IBus Service Manager

Para configurar las colas dentro del archivo de configuración  IBus.ServicesManager.Service.exe.config  se utiliza la siguiente estructura:

<listenerSettings type="QueueListener" enabled="true">  

El valor correspondiente a  queuePath  correponde al nombre de la cola de windows a utilizar.

   <queueSettings queuePath=".\private$\IBusServiceManagerTest" /> 

El valor que corresponde a type viene dado por el namespace del worker y separado por coma el nombre de la solución creada.


<workerSettings type="sm.test.EngineWorker, sm.test">

                    <customSettings data="" />

                      </workerSettings>


En caso de ocurrir una excepción en nuestro worker, la configuración a continuación reenvía el mensaje a la cola configurada, para este caso  sm_test_deadletter  estos mensajes se deben trata mediante otro worker.

 

< errorHandlerSettings type="QueueErrorHandler" enabled="true">

                      <queueErrorHandlerSettings useRetryQueue="false" deadLetterQueuePath=".\private$\sm_test_deadletter" />  

                      </errorHandlerSettings>

                    </listenerSettings> 

Instaladores

1. Este primer item corresponde al intalador de IBus Service Manager.

2. Este programa contenido dentro de SM_Viewer.exe tiene varias funcionalidades: 

  • Enviar mensajes a la colas creadas de windows.
  • Eliminar y crear colas.
  • Eliminar mensajes de las colas.
  • Reenviar mensaje a las colas.