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