Azure 事件中心 模拟器允许你在本地测试和验证应用,而无需连接云端。 本文将向您展示如何使用Docker或自动化脚本来设置、运行和与模拟器交互。
先决条件
- Docker Desktop
- 最低硬件要求:
- 2 GB 的 RAM
- 5 GB 的磁盘空间
- 适用于 Linux 的 Windows 子系统(WSL)配置(仅限 Windows):
注意
在继续本文步骤之前,请确保Docker Desktop正在运行。
运行 Azure 事件中心模拟器
通过自动脚本或Linux容器运行Azure 事件中心模拟器。 选择最适合开发环境的方法。
在运行自动化脚本之前,请在本地克隆模拟器的 GitHub 安装程序存储库。
Windows
使用以下步骤在本地 Windows 上运行事件中心模拟器。
打开 PowerShell,然后使用
cd转到你克隆的 common scripts 文件夹 所在的目录。cd <path to your common scripts folder> # Update this path在这个目录中输入
wsl命令打开WSL。wsl运行设置脚本
LaunchEmulator.sh。 脚本会调用两个容器:Event Hubs 模拟器和 Azurite,后者是模拟器的依赖。./LaunchEmulator.sh
Linux 和 macOS
若要在 Linux 或 macOS 上本地运行事件中心模拟器,请执行以下操作:
- 运行安装脚本 LaunchEmulator.sh。运行该脚本会启动两个容器:事件中心模拟器和 Azurite(模拟器的依赖项)。
步骤成功后,可以找到在 Docker 中运行的容器。
与模拟器交互
默认情况下,模拟器使用 config.json 配置文件。 您可以通过编辑此文件配置实体,如事件中心和Kafka主题。 更多信息请参见 配额配置变更。
你用来连接Event Hubs模拟器的连接字符串取决于你的应用运行在哪里:
当模拟器容器和你的应用程序在本地计算机上原生运行时,请使用以下连接字符串:
"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 = // The value depends on the connection string that you use.
SecurityProtocol = SecurityProtocol.SaslPlaintext,
SaslMechanism = SaslMechanism.Plain,
SaslUsername = "$ConnectionString",
SaslPassword = // The value depends on your topology.
};
SaslPassword 和 BootstrapServers 的值取决于你的设置拓扑。 详情请参见 “与模拟器交互 ”部分。
重要
使用 Kafka 时,只有生产者和消费者 API 与 Event Hubs 模拟器兼容。
要开始,可以查看 GitHub 上的 Event Hubs 模拟器示例。