In diesem Artikel werden die Schritte zum lokalen Entwickeln und Testen mithilfe des Azure Service Bus-Emulators zusammengefasst.
Voraussetzungen
-
Docker Desktop
- Mindestanforderungen für Hardware:
- 2 GB RAM
- 5 GB Speicherplatz auf dem Datenträger
- Windows-Subsystem für Linux (WSL) (nur für Windows):
Hinweis
Stellen Sie sicher, dass Docker Desktop im Hintergrund ausgeführt wird, bevor Sie mit den Schritten in diesem Artikel fortfahren.
Ausführen des Emulators
Zum Ausführen des Service Bus-Emulators können Sie ein automatisiertes Skript oder einen Linux-Container verwenden:
Klonen Sie vor dem Ausführen eines automatisierten Skripts das GitHub-Installer-Repository des Emulators lokal.
Windows
Führen Sie die folgenden Schritte aus, um den Service Bus-Emulator lokal unter Windows auszuführen:
Führen Sie den folgenden Befehl im PowerShell-Fenster aus, um die Ausführung nicht signierter Skripts zuzulassen:
$>Start-Process powershell -Verb RunAs -ArgumentList 'Set-ExecutionPolicy Bypass –Scope CurrentUser'
Führen Sie das Setupskript LaunchEmulator.ps1 aus. Wenn Sie das Skript ausführen, werden zwei Container angezeigt: der Service Bus-Emulator und SQL Edge (eine Abhängigkeit für den Emulator).
Linux und macOS
So führen Sie den Service Bus-Emulator lokal unter Linux oder macOS aus:
- Führen Sie das Setupskript LaunchEmulator.sh aus. Wenn Sie das Skript ausführen, werden zwei Container angezeigt: der Service Bus-Emulator und SQL Edge (eine Abhängigkeit für den Emulator).
Stellen Sie zum Starten des Emulators eine Konfiguration für die Entitäten bereit, die Sie verwenden möchten. Speichern Sie die folgende JSON-Datei lokal als config.json:
{
"UserConfig": {
"Namespaces": [
{
"Name": "sbemulatorns",
"Queues": [
{
"Name": "queue.1",
"Properties": {
"DeadLetteringOnMessageExpiration": false,
"DefaultMessageTimeToLive": "PT1H",
"DuplicateDetectionHistoryTimeWindow": "PT20S",
"ForwardDeadLetteredMessagesTo": "",
"ForwardTo": "",
"LockDuration": "PT1M",
"MaxDeliveryCount": 10,
"RequiresDuplicateDetection": false,
"RequiresSession": false
}
}
],
"Topics": [
{
"Name": "topic.1",
"Properties": {
"DefaultMessageTimeToLive": "PT1H",
"DuplicateDetectionHistoryTimeWindow": "PT20S",
"RequiresDuplicateDetection": false
},
"Subscriptions": [
{
"Name": "subscription.1",
"Properties": {
"DeadLetteringOnMessageExpiration": false,
"DefaultMessageTimeToLive": "PT1H",
"LockDuration": "PT1M",
"MaxDeliveryCount": 10,
"ForwardDeadLetteredMessagesTo": "",
"ForwardTo": "",
"RequiresSession": false
},
"Rules": [
{
"Name": "app-prop-filter-1",
"Properties": {
"FilterType": "Correlation",
"CorrelationFilter": {
"ContentType": "application/text",
"CorrelationId": "id1",
"Label": "subject1",
"MessageId": "msgid1",
"ReplyTo": "someQueue",
"ReplyToSessionId": "sessionId",
"SessionId": "session1",
"To": "xyz"
}
}
}
]
},
{
"Name": "subscription.2",
"Properties": {
"DeadLetteringOnMessageExpiration": false,
"DefaultMessageTimeToLive": "PT1H",
"LockDuration": "PT1M",
"MaxDeliveryCount": 10,
"ForwardDeadLetteredMessagesTo": "",
"ForwardTo": "",
"RequiresSession": false
},
"Rules": [
{
"Name": "user-prop-filter-1",
"Properties": {
"FilterType": "Correlation",
"CorrelationFilter": {
"Properties": {
"prop3": "value3"
}
}
}
}
]
},
{
"Name": "subscription.3",
"Properties": {
"DeadLetteringOnMessageExpiration": false,
"DefaultMessageTimeToLive": "PT1H",
"LockDuration": "PT1M",
"MaxDeliveryCount": 10,
"ForwardDeadLetteredMessagesTo": "",
"ForwardTo": "",
"RequiresSession": false
}
}
]
}
]
}
],
"Logging": {
"Type": "File"
}
}
}
2. Speichern Sie die folgende YAML-Datei als docker-compose.yaml, um Container für den Service Bus-Emulator einzurichten
Hinweis
Der Service Bus-Emulator verwendet standardmäßig den Port 5672. Wenn Sie die Konfiguration so angepasst haben, dass ein anderer Port verwendet wird, aktualisieren Sie die Porteinstellung in der YAML-Datei.
name: microsoft-azure-servicebus-emulator
services:
emulator:
container_name: "servicebus-emulator"
image: mcr.microsoft.com/azure-messaging/servicebus-emulator:latest
volumes:
- "${CONFIG_PATH}:/ServiceBus_Emulator/ConfigFiles/Config.json"
ports:
- "5672:5672"
environment:
SQL_SERVER: sqledge
MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD}
ACCEPT_EULA: ${ACCEPT_EULA}
depends_on:
- sqledge
networks:
sb-emulator:
aliases:
- "sb-emulator"
sqledge:
container_name: "sqledge"
image: "mcr.microsoft.com/azure-sql-edge:latest"
networks:
sb-emulator:
aliases:
- "sqledge"
environment:
ACCEPT_EULA: ${ACCEPT_EULA}
MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD}
networks:
sb-emulator:
- Erstellen Sie die .env-Datei, um die Umgebungsvariablen für den Service Bus-Emulator zu deklarieren, und stellen Sie sicher, dass alle folgenden Umgebungsvariablen festgelegt sind.
# Environment file for user defined variables in docker-compose.yml
# 1. CONFIG_PATH: Path to Config.json file
# Ex: CONFIG_PATH="C:\\Config\\Config.json"
CONFIG_PATH="<Replace with path to Config.json file>"
# 2. ACCEPT_EULA: Pass 'Y' to accept license terms for Azure SQL Edge and Azure Service Bus emulator.
# Service Bus emulator EULA : https://github.com/Azure/azure-service-bus-emulator-installer/blob/main/EMULATOR_EULA.txt
# SQL Edge EULA : https://go.microsoft.com/fwlink/?linkid=2139274
ACCEPT_EULA="N"
# 3. MSSQL_SA_PASSWORD to be filled by user as per policy
MSSQL_SA_PASSWORD=""
Wichtig
Indem Sie den Wert „Y“ an die Umgebungsvariable ACCEPT_EULA übergeben, bestätigen und akzeptieren Sie die Allgemeinen Geschäftsbedingungen des Endbenutzer-Lizenzvertrags (EULA) für den Azure Service Bus-Emulator und Azure SQL Edge.
Achten Sie darauf, die ENV-Datei in demselben Verzeichnis zu speichern wie die Datei „docker-compose.yaml“.
Legen Sie die Umgebungsvariable MSSQL_SA_PASSWORD auf ein sicheres Kennwort von mindestens acht Zeichen fest, das die Kennwortanforderungen erfüllt.
Sie beim Angeben von Dateipfaden in Windows doppelte umgekehrte Schrägstriche (\\
) anstelle von einzelnen umgekehrten Schrägstrichen (\
), um Probleme mit Escapezeichen zu vermeiden.
- Führen Sie den folgenden Befehl aus, um den Emulator auszuführen:
docker compose -f <PathToDockerComposeFile> up -d
Nach erfolgreicher Ausführung der Schritte werden die Container in Docker ausgeführt.
Interagieren mit dem Emulator
Standardmäßig verwendet der Emulator die Konfigurationsdatei config.json. Sie können Entitäten konfigurieren, indem Sie Änderungen an der Konfigurationsdatei vornehmen. Weitere Informationen finden Sie unter Vornehmen von Konfigurationsänderungen
Sie können die folgende Verbindungszeichenfolge verwenden, um eine Verbindung mit dem Service Bus-Emulator herzustellen:
- Wenn der Emulatorcontainer und die interagierende Anwendung nativ auf dem lokalen Computer ausgeführt werden, verwenden Sie die folgende Verbindungszeichenfolge:
"Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- Anwendungen (containerisiert/nicht containerisiert) auf dem anderen Computer und dem gleichen lokalen Netzwerk können mit dem Emulator interagieren, indem die IPv4-Adresse des Computers verwendet wird. Verwenden Sie die folgende Verbindungszeichenfolge:
"Endpoint=sb://192.168.y.z;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- Anwendungscontainer im selben Brückennetzwerk können mit dem Emulator mithilfe des Alias oder der IP interagieren. Die folgende Verbindungszeichenfolge setzt voraus, dass der Name des Emulatorcontainers „servicebus-emulator“ lautet:
"Endpoint=sb://servicebus-emulator;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- Anwendungscontainer im anderen Brückennetzwerk können mit dem Emulator interagieren, indem „host.docker.internal“ als Host verwendet wird. Verwenden Sie die folgende Verbindungszeichenfolge:
"Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
Sie können die neuesten Client-SDKs verwenden, um mit dem Service Bus-Emulator in verschiedenen Programmiersprachen zu interagieren. Informationen zu den ersten Schritten finden Sie in den Service Bus-Emulatorbeispielen auf GitHub.
Zugehöriger Inhalt
Übersicht über den Azure Service Bus-Emulator