使用订阅在本地测试 Azure 服务总线队列

Test Azure Service Bus Queues Locally with a subscription

如何在本地测试 Azure 服务总线队列?

1.I 必须将我们的队列重命名为其他名称,因为一些其他开发人员或已经 运行 函数可能会使用它

Example: 

a) Original Queue: Product

b) Test Queue: Test

2.We 也有 Azure 函数拾取队列,因此也重命名服务总线触发器。

但是,还是不行?

还有什么需要改的吗?

我看到队列消息是用服务总线资源管理器发送的,但它们不是事件句柄或响应我们的流程操作。

[FunctionName(nameof(TestAsync))]
public async Task TestRollAsync(
[ServiceBusTrigger("test", Connection = "ServiceBusConnection", IsSessionsEnabled = false)] Message sbMessage)
{
    var cmessage = Encoding.UTF8.GetString(sbMessage.Body);
    Test msg = null;

    try
    {
        msg = JsonConvert.DeserializeObject<Test>(cmessage);
    }

重命名队列不是最方便的方法,因为它需要在您提交代码时撤消更改,这就是 error-prone。更好的选择是使用 developer-specific Azure 服务总线命名空间,它可以使用 MSDN/company 帐户在标准层上进行配置。您可以根据需要在标准层上拥有任意数量的命名空间。当提供但未使用额外的命名空间时,除了每月 10 美元(或等值的货币)外,该服务不涉及任何费用。

使用每个开发人员的命名空间,您的代码保持 as-is,连接字符串(值)可以在本地的 settings.json 文件中更改,不应提交到存储库.这样队列名称和连接字符串名称保持不变,您可以在本地develop/debug

1.Rename 队列到其他东西,因为一些其他开发人员或已经 运行 功能可能会使用它。 (并且未设置 Azure 命名空间,如此处所列

示例:

a) 原始队列:产品

b) 测试队列:测试

2.We 也有 Azure 函数拾取队列,因此也重命名服务总线触发器。

[ServiceBusTrigger("test", Connection = "ServiceBusConnection", IsSessionsEnabled = false)] Message sbMessage)
{

3.Make 当然 Azure Functions 也在解决方案中 运行。

4.Create 一个 Azure 函数 local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"   
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  }
}