Questo articolo riepiloga i passaggi per sviluppare e testare localmente usando l'emulatore bus di servizio di Azure.
Prerequisiti
-
Desktop Docker
- Requisiti hardware minimi:
- 2 GB di RAM
- 5 GB di spazio su disco
- configurazione di sottosistema Windows per Linux (WSL) (solo per Windows):
Nota
Prima di continuare con i passaggi descritti in questo articolo, assicurarsi che Docker Desktop sia operativo in background.
Eseguire l'emulatore
Per eseguire l'emulatore di bus di servizio, è possibile usare uno script automatizzato o un contenitore Linux:
Prima di eseguire uno script automatizzato, clonare il repository del programma di installazione GitHub dell'emulatore in locale.
Finestre
Per eseguire l'emulatore di bus di servizio in locale in Windows, seguire questa procedura:
Consentire l'esecuzione di script non firmati eseguendo questo comando nella finestra di PowerShell:
$>Start-Process powershell -Verb RunAs -ArgumentList 'Set-ExecutionPolicy Bypass –Scope CurrentUser'
Eseguire lo script di installazione LaunchEmulator.ps1. L'esecuzione dello script genera due contenitori: l'emulatore bus di servizio e Sql Edge (una dipendenza per l'emulatore).
Linux e macOS
Per eseguire l'emulatore bus di servizio in locale in Linux o macOS:
- Eseguire lo script di installazione LaunchEmulator.sh. L'esecuzione dello script genera due contenitori: l'emulatore bus di servizio e Sql Edge (una dipendenza per l'emulatore).
Per avviare l'emulatore, specificare una configurazione per le entità da usare. Salvare il file JSON seguente in locale come 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.To creare contenitori per bus di servizio emulatore, salvare il file yaml seguente come docker-compose.yaml
Nota
bus di servizio emulatore usa la porta 5672 per impostazione predefinita. Se è stata personalizzata la configurazione per usare una porta diversa, aggiornare l'impostazione delle porte nel file YAML.
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:
- Creare un file con estensione env per dichiarare le variabili di ambiente per bus di servizio emulatore e assicurarsi che siano impostate tutte le variabili di ambiente seguenti.
# 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=""
Importante
Passando il valore "Y" alla variabile di ambiente "ACCEPT_EULA", si stanno riconoscendo e accettando i termini e le condizioni del Contratto di licenza con l'utente finale (EULA) sia per bus di servizio di Azure emulatoreche per SQL Edge di Azure.
Assicurarsi di inserire il file con estensione env nella stessa directory nel file docker-compose.yaml.
Impostare la variabile di ambiente MSSQL_SA_PASSWORD su una password complessa di almeno otto caratteri che soddisfi i requisiti della password.
Quando si specificano percorsi di file in Windows, usare doppie barre rovesciata (\\
) invece di singole barre rovesciata (\
) per evitare problemi con caratteri di escape.
- Per eseguire l'emulatore, eseguire il comando seguente:
docker compose -f <PathToDockerComposeFile> up -d
Dopo aver completato i passaggi, è possibile trovare i contenitori in esecuzione in Docker.
Interagire con l'emulatore
Per impostazione predefinita, l'emulatore usa config.json file di configurazione. È possibile configurare le entità apportando modifiche al file di configurazione. Per altre informazioni, vedere Apportare modifiche alla configurazione
È possibile usare i stringa di connessione seguenti per connettersi all'emulatore di bus di servizio:
- Quando il contenitore dell'emulatore e l'applicazione di interazione vengono eseguiti in modo nativo nel computer locale, usare i stringa di connessione seguenti:
"Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- Le applicazioni (in contenitori o non in contenitori) nel computer diverso e nella stessa rete locale possono interagire con l'emulatore usando l'indirizzo IPv4 del computer. Usare i stringa di connessione seguenti:
"Endpoint=sb://192.168.y.z;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- I contenitori di applicazioni nella stessa rete bridge possono interagire con l'emulatore usando il relativo alias o IP. Di seguito stringa di connessione si presuppone che il nome del contenitore dell'emulatore sia "servicebus-emulator":
"Endpoint=sb://servicebus-emulator;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- I contenitori di applicazioni nella rete bridge diversa possono interagire con l'emulatore usando "host.docker.internal" come host. Usare i stringa di connessione seguenti:
"Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
È possibile usare gli SDK client più recenti per interagire con l'emulatore di bus di servizio in vari linguaggi di programmazione. Per iniziare, vedere gli esempi di emulatori di bus di servizio in GitHub.
Contenuto correlato
Panoramica dell'emulatore bus di servizio di Azure