microsoft/azure-messaging-servicebus-emulatorAzure Service Bus 模拟器 旨在为 Azure Service Bus 提供本地开发体验,使你能够在隔离环境中开发和测试代码,不受云环境干扰。
bashdocker pull mcr.microsoft.com/azure-messaging/servicebus-emulator
更多详情可查看GitHub仓库:[***]
Azure Service Bus 模拟器依赖于 SQL Edge。以下部分说明如何运行 Service Bus 模拟器及进行配置更改。
json{ "UserConfig": { "Namespaces": [ { "Name": "sbemulatorns", "Queues": [ { "Name": "queue.1", "Properties": { "DeadLetteringOnMessageExpiration": false, "DefaultMessageTimeToLive": "PT1H", "DuplicateDetectionHistoryTimeWindow": "PT20S", "ForwardDeadLetteredMessagesTo": "", "ForwardTo": "", "LockDuration": "PT1M", "MaxDeliveryCount": 10, "RequiresDuplicateDetection": false, "RequiresSession": false } } ], "Topics": [ { "Name": "topic.1", "Properties": { "DefaultMessageTimeToLive": "PT1H", "DuplicateDetectionHistoryTimeWindow": "PT20S", "RequiresDuplicateDetection": false }, "Subscriptions": [ { "Name": "subscription.1", "Properties": { "DeadLetteringOnMessageExpiration": false, "DefaultMessageTimeToLive": "PT1H", "LockDuration": "PT1M", "MaxDeliveryCount": 10, "ForwardDeadLetteredMessagesTo": "", "ForwardTo": "", "RequiresSession": false }, "Rules": [ { "Name": "app-prop-filter-1", "Properties": { "FilterType": "Correlation", "CorrelationFilter": { "ContentType": "application/text", "CorrelationId": "id1", "Label": "subject1", "MessageId": "msgid1", "ReplyTo": "someQueue", "ReplyToSessionId": "sessionId", "SessionId": "session1", "To": "xyz" } } } ] }, { "Name": "subscription.2", "Properties": { "DeadLetteringOnMessageExpiration": false, "DefaultMessageTimeToLive": "PT1H", "LockDuration": "PT1M", "MaxDeliveryCount": 10, "ForwardDeadLetteredMessagesTo": "", "ForwardTo": "", "RequiresSession": false }, "Rules": [ { "Name": "user-prop-filter-1", "Properties": { "FilterType": "Correlation", "CorrelationFilter": { "Properties": { "prop3": "value3" } } } } ] }, { "Name": "subscription.3", "Properties": { "DeadLetteringOnMessageExpiration": false, "DefaultMessageTimeToLive": "PT1H", "LockDuration": "PT1M", "MaxDeliveryCount": 10, "ForwardDeadLetteredMessagesTo": "", "ForwardTo": "", "RequiresSession": false } } ] } ] } ], "Logging": { "Type": "File" } } }
yamlname: microsoft-azure-servicebus-emulator services: emulator: container_name: "servicebus-emulator" image: mcr.microsoft.com/azure-messaging/servicebus-emulator:latest volumes: - "${CONFIG_PATH}:/ServiceBus_Emulator/ConfigFiles/Config.json" ports: - "5672:5672" environment: SQL_SERVER: sqledge MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD} ACCEPT_EULA: ${ACCEPT_EULA} depends_on: - sqledge networks: sb-emulator: aliases: - "sb-emulator" sqledge: container_name: "sqledge" image: "mcr.microsoft.com/azure-sql-edge:latest" networks: sb-emulator: aliases: - "sqledge" environment: ACCEPT_EULA: ${ACCEPT_EULA} MSSQL_SA_PASSWORD: ${MSSQL_SA_PASSWORD} networks: sb-emulator:
# docker-compose.yml 中用户定义变量的环境文件 # 1. CONFIG_PATH: Config.json 文件路径 # 示例: CONFIG_PATH="C:\\Config\\Config.json" CONFIG_PATH="<替换为 Config.json 文件的路径>" # 2. ACCEPT_EULA: 传入 'Y' 表示接受 Azure SQL Edge 和 Azure Service Bus 模拟器的许可条款。 # Service Bus 模拟器许可协议:[***] # SQL Edge 许可协议:[***] ACCEPT_EULA="N" # 3. MSSQL_SA_PASSWORD 需由用户根据策略填写:[***] MSSQL_SA_PASSWORD: ""
向环境变量 "ACCEPT_EULA" 传入值 "Y",即表示你确认并接受 Azure Service Bus 模拟器 和 Azure SQL Edge 的最终用户许可协议 (EULA) 条款。
确保 .env 文件与 docker-compose.yaml 文件位于同一目录。
设置 MSSQL_SA_PASSWORD 环境变量时,需使用至少 8 个字符的强密码,且符合 密码要求。
在 Windows 中指定文件路径时,需使用双反斜杠 (\\) 代替单反斜杠 (\),以避免转义字符问题。
bashdocker compose -f <DockerCompose文件路径> up -d
使用以下连接字符串与模拟器交互:
"Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
有关不同场景下连接字符串的变体,可参考 文档。
你也可参考 安装器仓库 中的自动化脚本运行模拟器。
模拟器不提供官方支持。任何问题或建议请通过 安装器仓库 的 GitHub issues 报告。
提供反馈请使用以下链接 反馈。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务