Artikel ini merangkum langkah-langkah untuk mengembangkan dan menguji secara lokal dengan menggunakan emulator Azure Bus Layanan.
Prasyarat
-
Desktop Docker
- Persyaratan perangkat keras minimum:
- konfigurasi Subsistem Windows untuk Linux (WSL) (hanya untuk Windows):
Catatan
Sebelum Anda melanjutkan langkah-langkah dalam artikel ini, pastikan Docker Desktop beroperasi di latar belakang.
Jalankan emulator
Untuk menjalankan emulator Bus Layanan, Anda dapat menggunakan skrip otomatis atau kontainer Linux:
Sebelum Anda menjalankan skrip otomatis, kloning repositori penginstal GitHub emulator secara lokal.
Windows
Gunakan langkah-langkah berikut untuk menjalankan emulator Bus Layanan secara lokal di Windows:
Izinkan eksekusi skrip yang tidak ditandatangani dengan menjalankan perintah ini di jendela PowerShell:
$>Start-Process powershell -Verb RunAs -ArgumentList 'Set-ExecutionPolicy Bypass –Scope CurrentUser'
Jalankan skrip penyiapan LaunchEmulator.ps1. Menjalankan skrip memunculkan dua kontainer: emulator Bus Layanan dan Sql Edge (dependensi untuk emulator).
Linux dan macOS
Untuk menjalankan emulator Bus Layanan secara lokal di Linux atau macOS:
- Jalankan LaunchEmulator.sh skrip penyiapan. Menjalankan skrip memunculkan dua kontainer: emulator Bus Layanan dan Sql Edge (dependensi untuk emulator).
Untuk memulai emulator, berikan konfigurasi untuk entitas yang ingin Anda gunakan. Simpan file JSON berikut secara lokal sebagai 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 memutar kontainer untuk emulator Bus Layanan, simpan file .yaml berikut sebagai docker-compose.yaml
Catatan
Bus Layanan Emulator menggunakan port 5672 secara default. Jika Anda menyesuaikan konfigurasi untuk menggunakan port yang berbeda, perbarui pengaturan port dalam 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:
- Buat file .env untuk mendeklarasikan variabel lingkungan untuk emulator Bus Layanan dan pastikan semua variabel lingkungan berikut diatur.
# 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=""
Penting
Dengan meneruskan nilai "Y" ke variabel lingkungan "ACCEPT_EULA", Anda mengakui dan menerima syarat dan ketentuan Perjanjian Lisensi Pengguna Akhir (EULA) untuk emulator Azure Bus Layanan dan Azure SQL Edge.
Pastikan untuk menempatkan file .env di direktori yang sama ke file docker-compose.yaml.
Atur variabel lingkungan MSSQL_SA_PASSWORD ke kata sandi yang kuat setidaknya delapan karakter yang memenuhi persyaratan kata sandi.
Saat menentukan jalur file di Windows, gunakan garis miring terbelakang ganda (\\
) alih-alih garis miring terbelakang tunggal (\
) untuk menghindari masalah dengan karakter escape.
- Untuk menjalankan emulator, jalankan perintah berikut:
docker compose -f <PathToDockerComposeFile> up -d
Setelah langkah-langkah berhasil, Anda dapat menemukan kontainer yang berjalan di Docker.
Berinteraksi dengan emulator
Secara default, emulator menggunakan file konfigurasi config.json . Anda dapat mengonfigurasi entitas dengan membuat perubahan pada file konfigurasi. Untuk mengetahui lebih lanjut, kunjungi membuat perubahan konfigurasi
Anda dapat menggunakan string koneksi berikut untuk terhubung ke emulator Bus Layanan:
- Saat kontainer emulator dan aplikasi berinteraksi berjalan secara asli di komputer lokal, gunakan string koneksi berikut:
"Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- Aplikasi (Kontainer/Non-kontainer) pada komputer yang berbeda dan jaringan lokal yang sama dapat berinteraksi dengan Emulator menggunakan alamat IPv4 komputer. Gunakan string koneksi berikut:
"Endpoint=sb://192.168.y.z;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- Kontainer aplikasi pada jaringan jembatan yang sama dapat berinteraksi dengan Emulator menggunakan alias atau IP-nya. Mengikuti string koneksi mengasumsikan nama kontainer Emulator adalah "servicebus-emulator":
"Endpoint=sb://servicebus-emulator;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
- Kontainer aplikasi di jaringan penghubung yang berbeda dapat berinteraksi dengan Emulator menggunakan "host.docker.internal" sebagai host. Gunakan string koneksi berikut:
"Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
Anda dapat menggunakan SDK klien terbaru untuk berinteraksi dengan emulator Bus Layanan di berbagai bahasa pemrograman. Untuk memulai, lihat sampel emulator Bus Layanan di GitHub.
Konten terkait
Gambaran umum emulator Azure Bus Layanan