ServiceControl ist das Überwachungshirn der Particular Service Platform, die NServiceBus und Tools zum Erstellen, Überwachen und Debuggen verteilter Systeme umfasst. ServiceControl sammelt Daten zu jeder einzelnen Nachricht, die durch das System fließt (Audit Queue), zu Fehlern (Error Queue) sowie zusätzliche Informationen zu Sagas, Endpunkt-Heartbeats und benutzerdefinierten Prüfungen (Control Queue). Die Informationen werden dann über eine HTTP-API und SignalR-Benachrichtigungen an ServicePulse und ServiceInsight weitergegeben.
Weitere Informationen finden Sie in der ServiceControl-Dokumentation.
ServiceControl, ServiceControl.Audit und ServiceControl.Monitoring können lokal ausgeführt/debuggt werden, indem Sie die folgenden Schritte ausführen:
app.config
des Instanztyps, der ausgeführt/debuggt werden muss, um auszuwählen, welcher Transport und welche Persistenz verwendet werden soll.Eine Videodemo, die die Einrichtung zeigt, ist auf dem jeweiligen YouTube-Kanal verfügbar:
Alle Container werden bei jedem Build erstellt und in die GitHub-Container-Registrierung übertragen, wo über ihren Namen auf die verschiedenen Instanztypen zugegriffen und diese lokal ausgeführt werden können.
Wenn die Instanz zum ersten Mal ausgeführt wird, muss sie die erforderliche Infrastruktur einrichten. Sobald die Instanz für die Verwendung des ausgewählten Transports und Persisters konfiguriert ist, führen Sie sie dazu im Setup-Modus aus. Dies kann mithilfe des Setup {instance name}
erfolgen, das in der Datei launchSettings.json
jeder Instanz definiert ist. Wenn die Instanz im Setup-Modus gestartet wird, startet sie wie gewohnt, führt den Setup-Vorgang aus und wird beendet. Zu diesem Zeitpunkt kann die Instanz normal ausgeführt werden, indem das nicht eingerichtete Startprofil verwendet wird.
Um das lokale Testen zu erleichtern, wurde der Lerntransport zur Liste der verfügbaren Transporte beim Einrichten einer neuen Instanz in SCMU hinzugefügt. Damit es verfügbar wird, muss eine Umgebungsvariable ServiceControl_IncludeLearningTransport
mit dem Wert true
erstellt werden.
Das Testen mit dem CI-Workflow hängt von den folgenden Geheimnissen ab, die sowohl für Actions- als auch für Dependabot-Geheimnisse definiert werden müssen. Die besonderen Werte für diese Geheimnisse werden in der sicheren Notiz mit dem Namen ServiceControl Repo Secrets gespeichert.
LICENSETEXT
: Bestimmter SoftwarelizenztextAWS_ACCESS_KEY_ID
: Zum Testen von SQSAWS_SECRET_ACCESS_KEY
: Zum Testen von SQSAWS_REGION
: Zum Testen von SQS Die ständige Durchführung aller Tests erfordert eine Menge Ressourcen. Tests werden basierend auf der Umgebungsvariablen ServiceControl_TESTS_FILTER
gefiltert. Um nur eine Teilmenge auszuführen, z. B. SQS-Transporttests, definieren Sie die Variable als ServiceControl_TESTS_FILTER=SQS
. Die folgende Liste enthält alle möglichen ServiceControl_TESTS_FILTER
-Werte:
Default
: Führt nur nicht transportspezifische Tests ausAzureServiceBus
AzureStorageQueues
MSMQ
RabbitMQ
SqlServer
SQS
HINWEIS: Wenn keine Variable definiert ist, werden alle Tests ausgeführt.
Schritte:
Erstellen Sie die Lösung
Öffnen Sie PowerShell 7
Importieren Sie das Modul, indem Sie den Pfad zum ServiceControl-Git-Repo-Ordner deployPowerShellModulesParticular.ServiceControl.Management
angeben
Import-Module - Name S:ServiceControldeployPowerShellModulesParticular.ServiceControl.Management - Verbose
Set-ExecutionPolicy Unrestricted
Nachdem das Modul nun erfolgreich importiert wurde, geben Sie eines der ServiceControl PowerShell-Skripts ein, um es zu testen. Beispiel: Folgendes erstellt eine neue ServiceControl-Instanz
$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