使用 Azure 事件中心模拟器在本地进行测试
本文总结了使用 Azure 事件中心模拟器进行本地开发和测试的步骤。
先决条件
- Docker 桌面
- 最低硬件要求:
- 2 GB 的 RAM
- 5 GB 的磁盘空间
- 适用于 Linux 的 Windows 子系统 (WSL) 配置(仅限 Windows):
注意
在继续执行本文中的步骤之前,请确保 Docker Desktop 在后台正常运行。
运行仿真器
若要运行事件中心模拟器,可以使用自动化脚本或 Linux 容器:
在运行自动化脚本之前,请在本地克隆模拟器的 GitHub 安装程序存储库。
Windows
使用以下步骤在 Windows 上本地运行事件中心模拟器:
通过在 PowerShell 窗口中运行以下命令,允许执行未签名的脚本:
$>Start-Process powershell -Verb RunAs -ArgumentList 'Set-ExecutionPolicy Bypass -Scope CurrentUser'
运行安装脚本 LaunchEmulator.ps1。 运行该脚本会启动两个容器:事件中心模拟器和 Azurite(模拟器的依赖项)。
Linux 和 macOS
若要在 Linux 或 macOS 上本地运行事件中心模拟器,请执行以下操作:
- 运行安装脚本 LaunchEmulator.sh。运行该脚本会启动两个容器:事件中心模拟器和 Azurite(模拟器的依赖项)。
步骤成功后,可以找到在 Docker 中运行的容器。
与模拟器交互
默认情况下,模拟器使用 config.json 配置文件。 可以通过对配置文件进行更改来配置实体(事件中心/Kafka 主题)。 若要了解详细信息,请访问进行配置更改
可使用以下连接字符串连接到事件中心模拟器:
- 当模拟器容器和交互应用程序在本地计算机上进行本地运行时,请使用以下连接字符串:
"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 与模拟器交互。 以下连接字符串假定模拟器的名称具有默认值,即“eventhubs-emulator”:
"Endpoint=sb://eventhubs-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;"
与 Kafka 交互时,请确保设置生成者和使用者配置,如下所示:
{
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
};
BootstrapServers 和 SaslPassword 的值取决于设置拓扑。 有关详细信息,请参阅与模拟器交互部分。
重要
使用 Kafka 时,只有生成者和使用者 API 与事件中心模拟器兼容。
若要开始,请参阅 GitHub 上的事件中心模拟器示例。