使用 Azure 事件中心模拟器在本地进行测试

本文总结了使用 Azure 事件中心模拟器进行本地开发和测试的步骤。

先决条件

注意

在继续执行本文中的步骤之前,请确保 Docker Desktop 在后台正常运行。

运行仿真器

若要运行事件中心模拟器,可以使用自动化脚本或 Linux 容器:

在运行自动化脚本之前,请在本地克隆模拟器的 GitHub 安装程序存储库

Windows

使用以下步骤在 Windows 上本地运行事件中心模拟器:

  1. 通过在 PowerShell 窗口中运行以下命令,允许执行未签名的脚本:

    $>Start-Process powershell -Verb RunAs -ArgumentList 'Set-ExecutionPolicy Bypass -Scope CurrentUser'

  2. 运行安装脚本 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 上的事件中心模拟器示例

Azure 事件中心模拟器概述