ServiceControl es el cerebro de monitoreo en la Plataforma de Servicios Particular, que incluye NServiceBus y herramientas para construir, monitorear y depurar sistemas distribuidos. ServiceControl recopila datos sobre cada mensaje que fluye a través del sistema (Cola de auditoría), errores (Cola de errores), así como información adicional sobre sagas, latidos de puntos finales y comprobaciones personalizadas (Cola de control). Luego, la información se expone a ServicePulse y ServiceInsight a través de una API HTTP y notificaciones de SignalR.
Consulte la documentación de ServiceControl para obtener más información.
ServiceControl, ServiceControl.Audit y ServiceControl.Monitoring se pueden ejecutar/depurar localmente siguiendo estos pasos:
app.config
del tipo de instancia que debe ejecutarse/depurarse para seleccionar qué transporte y persistencia usar.Una demostración en video que muestra cómo configurarlo está disponible en el canal de YouTube de Particular:
Todos los contenedores se crean en cada compilación y se envían al registro de contenedores de GitHub, donde se puede acceder a los distintos tipos de instancias por sus nombres y ejecutarlos localmente.
Si la instancia se ejecuta por primera vez, se debe configurar la infraestructura requerida. Para hacerlo, una vez que la instancia esté configurada para usar el transporte y el persistente seleccionado, ejecútela en modo de configuración. Esto se puede hacer utilizando el perfil de lanzamiento Setup {instance name}
que se define en el archivo launchSettings.json
de cada instancia. Cuando se inicia en el modo de configuración, la instancia se iniciará como de costumbre, ejecutará el proceso de configuración y saldrá. En este punto, la instancia se puede ejecutar normalmente utilizando el perfil de inicio sin configuración.
Para ayudar con las pruebas locales, el transporte de aprendizaje se agregó a la lista de transportes disponibles al configurar una nueva instancia en SCMU. Para que esté disponible, se debe crear una variable de entorno ServiceControl_IncludeLearningTransport
con un valor de true
.
Las pruebas utilizando el flujo de trabajo de CI dependen de los siguientes secretos, que deben definirse tanto para los secretos de Acciones como para los Dependabot. Los valores particulares para estos secretos se almacenan en la nota segura denominada ServiceControl Repo Secrets .
LICENSETEXT
: Texto de licencia de software particularAWS_ACCESS_KEY_ID
: Para probar SQSAWS_SECRET_ACCESS_KEY
: Para probar SQSAWS_REGION
: para probar SQS Ejecutar todas las pruebas todo el tiempo requiere muchos recursos. Las pruebas se filtran según la variable de entorno ServiceControl_TESTS_FILTER
. Para ejecutar sólo un subconjunto, por ejemplo, pruebas de transporte SQS, defina la variable como ServiceControl_TESTS_FILTER=SQS
. La siguiente lista contiene todos los valores posibles ServiceControl_TESTS_FILTER
:
Default
: ejecuta solo pruebas no específicas del transporteAzureServiceBus
AzureStorageQueues
MSMQ
RabbitMQ
SqlServer
SQS
NOTA: Si no se define ninguna variable, se ejecutarán todas las pruebas.
Pasos:
Construya la solución
Abra PowerShell 7
Importe el módulo especificando la ruta a la carpeta del repositorio git de ServiceControl deployPowerShellModulesParticular.ServiceControl.Management
Import-Module - Name S:ServiceControldeployPowerShellModulesParticular.ServiceControl.Management - Verbose
Set-ExecutionPolicy Unrestricted
Ahora que el módulo se ha importado correctamente, ingrese cualquiera de los scripts de PowerShell de ServiceControl para probarlos. Por ejemplo: lo siguiente crea una nueva instancia de ServiceControl
$serviceControlInstance = New-ServiceControlInstance `
- Name ' Test.DEV.ServiceControl ' `
- InstallPath C:ServiceControlBin `
- DBPath C:ServiceControlDB `
- LogPath C:ServiceControlLogs `
- Port 44334 `
- DatabaseMaintenancePort 44335 `
- Transport ' RabbitMQ - Direct routing topology (quorum queues) ' `
- ConnectionString ' host=localhost;username=guest;password=guest ' `
- ErrorQueue errormq `
- ErrorRetentionPeriod 10 : 00 : 00 : 00 `
- Acknowledgements RabbitMQBrokerVersion310