ServiceControl是特定服務平台中的監控大腦,其中包括NServiceBus和用於建置、監控和調試分散式系統的工具。 ServiceControl 收集流經系統的每個訊息的資料(審核佇列)、錯誤(錯誤佇列)以及有關傳奇、端點心跳和自訂檢查(控制佇列)的附加資訊。然後,該資訊透過 HTTP API 和 SignalR 通知公開給 ServicePulse 和 ServiceInsight。
有關詳細信息,請參閱服務控製文件。
ServiceControl、ServiceControl.Audit 和 ServiceControl.Monitoring 可以透過以下步驟在本地運行/調試:
app.config
檔案以選擇要使用的傳輸和持久性。特定 YouTube 頻道上提供了演示如何設定的影片演示:
所有容器都是在每次建置時建立的,並推送到 GitHub 容器註冊表,在這裡可以透過名稱存取各種實例類型並在本地運行。
如果實例是第一次執行,則必須設定所需的基礎架構。為此,將實例配置為使用選定的傳輸和持久性程式後,在設定模式下執行它。這可以透過使用每個實例的launchSettings.json
檔案中定義的安裝Setup {instance name}
啟動設定檔來完成。當以設定模式啟動時,實例將照常啟動,執行設定過程,然後退出。此時實例可以使用非安裝啟動設定檔正常運作。
為了幫助本地測試,在 SCMU 中設定新實例時,學習傳輸已新增至可用傳輸清單。為了使其可用,需要建立一個值為true
的環境變數ServiceControl_IncludeLearningTransport
。
使用 CI 工作流程進行測試取決於以下機密,必須為 Actions 和 Dependabot 機密定義這些機密。這些機密的特定值儲存在名為ServiceControl Repo Secrets 的安全註釋中。
LICENSETEXT
:特定軟體許可證文本AWS_ACCESS_KEY_ID
:用於測試 SQSAWS_SECRET_ACCESS_KEY
:用於測試 SQSAWS_REGION
:用於測試 SQS 一直運行所有測試需要大量資源。根據ServiceControl_TESTS_FILTER
環境變數過濾測試。若要僅執行子集(例如,SQS 傳輸測試),請將變數定義為ServiceControl_TESTS_FILTER=SQS
。以下清單包含所有可能的ServiceControl_TESTS_FILTER
值:
Default
- 僅運行非特定於傳輸的測試AzureServiceBus
AzureStorageQueues
MSMQ
RabbitMQ
SqlServer
SQS
注意:如果沒有定義變量,則將執行所有測試。
步驟:
建構解決方案
開啟 PowerShell 7
透過指定 ServiceControl git repo 資料夾deployPowerShellModulesParticular.ServiceControl.Management
的路徑來匯入模組
Import-Module - Name S:ServiceControldeployPowerShellModulesParticular.ServiceControl.Management - Verbose
Set-ExecutionPolicy Unrestricted
現在模組已成功匯入,請輸入任何 ServiceControl PowerShell 腳本來測試它們。例如:以下建立一個新的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