本文总结了使用 Azure 服务总线模拟器进行本地开发和测试的步骤。
模拟器在本地计算机上作为 Docker 容器运行,提供用于开发和测试的本地服务总线环境。 可以使用自动化脚本(用于快速设置)或手动配置 Docker 容器(以便进行更多控制)来设置模拟器。
Azure 服务总线模拟器通过 Microsoft容器注册表(MCR)提供。
先决条件
- 最低硬件要求:
- 2 GB 的 RAM
- 5 GB 的磁盘空间
- 需要在后台安装并运行 Docker Desktop。
注意
即使是自动化脚本方法也使用后台的 Docker 容器来运行服务总线模拟器。
- 适用于 Linux 的 Windows 子系统 (WSL) 配置(仅限 Windows):
运行仿真器
若要运行服务总线模拟器,可以使用自动化脚本或手动配置 Docker 容器。 这两种方法都会导致同一容器化模拟器在本地运行:
- 自动脚本:使用预生成的脚本自动设置和运行具有默认配置的模拟器容器
- Docker 容器:通过 Docker Compose 文件手动配置模拟器,从而提供完全控制
选择最符合需求的方法:
在运行自动化脚本之前,需要在本地克隆 Azure/azure-service-bus-emulator-installer 存储库。
Windows
使用以下步骤在 Windows 上本地运行服务总线模拟器:
打开 PowerShell 并导航到克隆了
cd脚本文件夹的目录,使用命令:cd <path to your common scripts folder> # Update this path发出 wsl 命令以在此目录中打开 WSL。
wsl运行安装脚本。/LaunchEmulator.sh。运行脚本会启动两个容器:服务总线模拟器和 SQL Server Linux(模拟器的依赖项)。
./Launchemulator.sh
Linux 和 macOS
若要在 Linux 或 macOS 上本地运行服务总线模拟器,请执行以下操作:
- LaunchEmulator.sh 运行安装脚本。运行脚本会启动两个容器:服务总线模拟器和 SQL Server Linux(模拟器的依赖项)。
验证模拟器是否正在运行
无论选择哪种安装方法,结果都是相同的:在本地计算机上的 Docker 容器中运行的服务总线模拟器。 模拟器由两个容器组成:
- 服务总线模拟器容器:提供服务总线功能的主要模拟器服务
- SQL Server Linux 容器:为模拟器提供后端存储的依赖项
可以通过检查 Docker Desktop 或使用终端中的命令 docker ps 来验证容器是否正在运行。
与模拟器交互
默认情况下,模拟器使用 config.json 配置文件。 可以通过对配置文件进行更改来配置实体。 若要了解详细信息,请访问进行配置更改
可使用以下连接字符串连接到服务总线模拟器:
当模拟器容器和交互应用程序在本地计算机上进行本地运行时,请使用以下连接字符串:
"Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"不同计算机上的应用程序(容器化/非容器化)和同一本地网络可以使用计算机的 IPv4 地址与模拟器交互。 使用以下连接字符串:
"Endpoint=sb://192.168.y.z;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"同一网桥网络上的应用程序容器可以使用其别名或 IP 与模拟器交互。 以下连接字符串假定模拟器容器的名称为“servicebus-emulator”:
"Endpoint=sb://servicebus-emulator;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"不同网桥网络上的应用程序容器可以使用“host.docker.internal”作为主机与模拟器进行交互。 使用以下连接字符串:
"Endpoint=sb://host.docker.internal;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
可以使用最新的客户端 SDK 跨各种编程语言与服务总线模拟器进行交互。 若要开始,请参阅 GitHub 上的服务总线模拟器示例。