Udostępnij za pośrednictwem


Testowanie lokalnie przy użyciu emulatora usługi Azure Event Hubs

W tym artykule przedstawiono podsumowanie kroków opracowywania i testowania lokalnego przy użyciu emulatora usługi Azure Event Hubs.

Wymagania wstępne

Uwaga

Przed kontynuowaniem kroków opisanych w tym artykule upewnij się, że program Docker Desktop działa w tle.

Uruchamianie emulatora

Aby uruchomić emulator usługi Event Hubs, możesz użyć zautomatyzowanego skryptu lub kontenera systemu Linux:

Przed uruchomieniem zautomatyzowanego skryptu sklonuj repozytorium instalatora GitHub emulatora lokalnie.

Windows

Wykonaj następujące kroki, aby uruchomić emulator usługi Event Hubs lokalnie w systemie Windows:

  1. Zezwól na wykonywanie niepodpisanych skryptów, uruchamiając to polecenie w oknie programu PowerShell:

    $>Start-Process powershell -Verb RunAs -ArgumentList 'Set-ExecutionPolicy Bypass –Scope CurrentUser'

  2. Uruchom skrypt instalacyjny LaunchEmulator.ps1. Uruchomienie skryptu powoduje wyświetlenie dwóch kontenerów: emulator usługi Event Hubs i Azurite (zależność emulatora).

Linux i macOS

Aby uruchomić emulator usługi Event Hubs lokalnie w systemie Linux lub macOS:

  • Uruchom skrypt konfiguracji LaunchEmulator.sh. Uruchomienie skryptu powoduje wyświetlenie dwóch kontenerów: emulator usługi Event Hubs i Azurite (zależność emulatora).

Po pomyślnym wykonaniu tych kroków można znaleźć kontenery uruchomione na platformie Docker.

Zrzut ekranu przedstawiający emulator usługi Event Hubs uruchomiony w kontenerze.

Interakcja z emulatorem

Domyślnie emulator używa config.json pliku konfiguracji. Jednostki (tematy usługi Event Hubs/Kafka) można skonfigurować, wprowadzając zmiany w pliku konfiguracji. Aby dowiedzieć się więcej, odwiedź stronę wprowadzanie zmian konfiguracji

Do nawiązania połączenia z emulatorem usługi Event Hubs można użyć następujących parametry połączenia:

  • Gdy kontener emulatora i aplikacja współdziałają natywnie na komputerze lokalnym, użyj następujących parametry połączenia:
"Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
  • Aplikacje (konteneryzowane/niekontenerowane) na różnych maszynach i tej samej sieci lokalnej mogą wchodzić w interakcję z emulatorem przy użyciu adresu IPv4 maszyny. Użyj następujących parametry połączenia:
"Endpoint=sb://192.168.y.z;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
  • Kontenery aplikacji w tej samej sieci mostka mogą wchodzić w interakcje z emulatorem przy użyciu aliasu lub adresu IP. Po parametry połączenia przyjęto założenie, że nazwa emulatora ma wartość domyślną"eventhubs-emulator":
"Endpoint=sb://eventhubs-emulator;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
  • Kontenery aplikacji w innej sieci mostka mogą współdziałać z emulatorem przy użyciu hosta "host.docker.internal". Użyj następujących parametry połączenia:
"Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"

Podczas interakcji z platformą Kafka upewnij się, że ustawiono konfigurację producent i odbiorca w następujący sposób:


        {
            BootstrapServers =  //Value of bootstrap servers would depend on kind of connection string being used
            SecurityProtocol = SecurityProtocol.SaslPlaintext,
            SaslMechanism = SaslMechanism.Plain,
            SaslUsername = "$ConnectionString",
            SaslPassword = //Value of connection string would depend on topology
        };

Wartość bootstrapServers i SaslPassword zależy od topologii konfiguracji. Aby uzyskać szczegółowe informacje, zobacz sekcję Interakcja z emulatorem .

Ważne

W przypadku korzystania z platformy Kafka tylko interfejsy API producentów i konsumentów są zgodne z emulatorem usługi Event Hubs.

Aby rozpocząć, zapoznaj się z przykładami emulatora usługi Event Hubs w witrynie GitHub.

Omówienie emulatora usługi Azure Event Hubs