ServiceControl est le cerveau de surveillance de la plateforme de services particulière, qui comprend NServiceBus et des outils pour créer, surveiller et déboguer des systèmes distribués. ServiceControl collecte des données sur chaque message circulant dans le système (file d'attente d'audit), les erreurs (file d'attente d'erreurs), ainsi que des informations supplémentaires concernant les sagas, les battements de cœur des points de terminaison et les contrôles personnalisés (file d'attente de contrôle). Les informations sont ensuite exposées à ServicePulse et ServiceInsight via une API HTTP et des notifications SignalR.
Consultez la documentation de ServiceControl pour plus d'informations.
ServiceControl, ServiceControl.Audit et ServiceControl.Monitoring peuvent être exécutés/débogués localement en suivant ces étapes :
app.config
du type d'instance qui doit être exécuté/débogué pour sélectionner le transport et la persistance à utiliser.Une démo vidéo montrant comment le configurer est disponible sur la chaîne YouTube Particular :
Tous les conteneurs sont créés à chaque build et transférés vers le registre de conteneurs GitHub où les différents types d'instances sont accessibles par leurs noms et exécutés localement.
Si l'instance est exécutée pour la première fois, elle doit mettre en place l'infrastructure requise. Pour ce faire, une fois l'instance configurée pour utiliser le transport et le persistant sélectionnés, exécutez-la en mode configuration. Cela peut être effectué à l'aide du profil de lancement Setup {instance name}
défini dans le fichier launchSettings.json
de chaque instance. Lorsqu'elle est démarrée en mode configuration, l'instance démarre comme d'habitude, exécute le processus de configuration et se termine. À ce stade, l'instance peut être exécutée normalement à l'aide du profil de lancement non configuré.
Pour faciliter les tests locaux, le transport Learning a été ajouté à la liste des transports disponibles lors de la configuration d'une nouvelle instance dans SCMU. Pour qu'elle soit disponible, une variable d'environnement ServiceControl_IncludeLearningTransport
doit être créée avec la valeur true
.
Les tests à l'aide du workflow CI dépendent des secrets suivants, qui doivent être définis pour les secrets Actions et Dependabot. Les valeurs particulières de ces secrets sont stockées dans la note sécurisée nommée ServiceControl Repo Secrets .
LICENSETEXT
: Texte particulier de la licence du logicielAWS_ACCESS_KEY_ID
: Pour tester SQSAWS_SECRET_ACCESS_KEY
: Pour tester SQSAWS_REGION
: Pour tester SQS Exécuter tous les tests à tout moment nécessite beaucoup de ressources. Les tests sont filtrés en fonction de la variable d'environnement ServiceControl_TESTS_FILTER
. Pour exécuter uniquement un sous-ensemble, par exemple des tests de transport SQS, définissez la variable comme ServiceControl_TESTS_FILTER=SQS
. La liste suivante contient toutes les valeurs ServiceControl_TESTS_FILTER
possibles :
Default
: exécute uniquement des tests non spécifiques au transportAzureServiceBus
AzureStorageQueues
MSMQ
RabbitMQ
SqlServer
SQS
REMARQUE : Si aucune variable n'est définie, tous les tests seront exécutés.
Mesures:
Construire la solution
Ouvrez PowerShell 7
Importez le module en spécifiant le chemin d'accès au dossier du dépôt git de ServiceControl deployPowerShellModulesParticular.ServiceControl.Management
Import-Module - Name S:ServiceControldeployPowerShellModulesParticular.ServiceControl.Management - Verbose
Set-ExecutionPolicy Unrestricted
Maintenant que le module a été importé avec succès, entrez l'un des scripts ServiceControl PowerShell pour les tester. Par exemple : ce qui suit crée une nouvelle instance 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