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.
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:
{
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 tipostring.
-
De tipo
string
Label
del mensaje. -
Contenido del mensaje correspondiente al
Body
de tipostring.
- 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 contrariofalse.
-
De tipo
bool
si el mensaje sera cifrado,true
si lo es, de lo contrariofalse.
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:
El valor correspondiente a queuePath correponde al nombre de la cola de windows a utilizar.
El valor que corresponde a type viene dado por el namespace del worker y separado por coma el nombre de la solución creada.
<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.
<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.