ServiceControl は、分散システムを構築、監視、デバッグするための NServiceBus とツールを含む、特定のサービス プラットフォームの監視頭脳です。 ServiceControl は、システムを流れるすべての単一メッセージ (監査キュー)、エラー (エラー キュー) に関するデータに加え、サガ、エンドポイントのハートビート、カスタム チェック (コントロール キュー) に関する追加情報を収集します。その後、情報は HTTP API および SignalR 通知を介して ServicePulse および ServiceInsight に公開されます。
詳細については、ServiceControl のドキュメントを参照してください。
ServiceControl、ServiceControl.Audit、および ServiceControl.Monitoring は、次の手順に従ってローカルで実行/デバッグできます。
app.config
ファイルを編集して、使用するトランスポートと永続性を選択します。セットアップ方法を示すビデオデモは、Particular YouTube チャンネルでご覧いただけます。
すべてのコンテナーはビルドごとに作成され、GitHub コンテナー レジストリにプッシュされます。そこで、さまざまなインスタンス タイプに名前でアクセスし、ローカルで実行できます。
インスタンスを初めて実行する場合は、必要なインフラストラクチャをセットアップする必要があります。これを行うには、選択したトランスポートとパーシスターを使用するようにインスタンスを構成したら、セットアップ モードで実行します。これは、各インスタンスのlaunchSettings.json
ファイルで定義されているSetup {instance name}
起動プロファイルを使用して行うことができます。セットアップ モードで起動すると、インスタンスは通常どおり起動し、セットアップ プロセスを実行して終了します。この時点では、セットアップされていない起動プロファイルを使用してインスタンスを通常どおり実行できます。
ローカル テストを支援するために、SCMU で新しいインスタンスをセットアップするときに、使用可能なトランスポートのリストにラーニング トランスポートが追加されました。これを使用できるようにするには、環境変数ServiceControl_IncludeLearningTransport
値true
で作成する必要があります。
CI ワークフローを使用したテストは、次のシークレットに依存します。これらのシークレットは、アクションと dependabot シークレットの両方に定義する必要があります。これらのシークレットの特定の値は、 ServiceControl Repo Secretsという名前の安全なメモに保存されます。
LICENSETEXT
: 特定のソフトウェア ライセンス テキストAWS_ACCESS_KEY_ID
: SQS のテスト用AWS_SECRET_ACCESS_KEY
: SQS のテスト用AWS_REGION
: SQS のテスト用すべてのテストを常に実行すると、大量のリソースが必要になります。テストはServiceControl_TESTS_FILTER
環境変数に基づいてフィルタリングされます。 SQS トランスポート テストなどのサブセットのみを実行するには、変数をServiceControl_TESTS_FILTER=SQS
として定義します。次のリストには、考えられるすべてのServiceControl_TESTS_FILTER
値が含まれています。
Default
- トランスポート固有ではないテストのみを実行しますAzureServiceBus
AzureStorageQueues
MSMQ
RabbitMQ
SqlServer
SQS
注: 変数が定義されていない場合は、すべてのテストが実行されます。
手順:
ソリューションを構築する
PowerShell 7を開く
ServiceControl git リポジトリ フォルダー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