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

Azure 事件中心模拟器使开发人员能够在本地测试和验证其应用程序,而无需连接到云。 本指南提供使用 Docker 或自动化脚本设置、运行和与模拟器交互的分步说明。

先决条件

注意

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

运行 Azure 事件中心模拟器

使用自动化脚本或 Linux 容器运行 Azure 事件中心模拟器。 选择最适合开发环境的方法。

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

Windows

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

  1. 打开 PowerShell 并导航到已使用克隆的cd脚本文件夹所在的目录:
    cd <path to your common scripts folder> # Update this path
    
    
  2. 发出 wsl 命令以在此目录中打开 WSL。
    wsl
    
    
  3. 运行安装程序脚本./LaunchEmulator.sh 运行脚本会引发两个容器:事件中心模拟器和 Azurite(模拟器的依赖项)。
    ./Launchemulator.sh
    
    

Linux 和 macOS

若要在 Linux 或 macOS 上本地运行事件中心模拟器,请执行以下操作:

  • 运行安装脚本 LaunchEmulator.sh。运行该脚本会启动两个容器:事件中心模拟器和 Azurite(模拟器的依赖项)。

步骤成功后,可以找到在 Docker 中运行的容器。

在容器中运行的 Azure 事件中心模拟器的屏幕截图。

与模拟器交互

默认情况下,模拟器使用 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 事件中心模拟器概述
GitHub 上的事件中心模拟器示例