通过订阅在本地测试Azure Service Bus队列

问题描述

如何在本地测试Azure Service Bus队列?

1。我必须将Queue重命名为其他名称,因为其他一些开发人员或已经运行的功能可能会使用它

Example: 

a) Original Queue: Product

b) Test Queue: Test

2。我们还具有Azure功能来拾取队列,因此也要重命名服务总线触发器。

但是,它仍然无法正常工作吗?

是否需要更改其他内容?

我看到队列消息是通过Service Bus Explorer发送的,但是它们不是事件句柄,也不是我们的流程动作所响应。

[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);
    }

解决方法

重命名队列不是最方便的方法,因为在提交代码时将需要撤消更改,这很容易出错。更好的选择是使用特定于开发人员的Azure服务总线名称空间,该名称空间可以使用MSDN /公司帐户在标准层上进行配置。您可以根据需要在标准层上具有多个名称空间。在配置和不使用其他名称空间时,除了每月10美元(或等值的您的货币)外,该服务不涉及其他任何费用。

每个开发人员都有一个命名空间,您的代码保持不变,并且连接字符串(值)可以在本地的settings.json文件中更改,并且不应提交给存储库。这样,队列名称和连接字符串名称将保持不变,您可以在本地进行开发/调试

,

1。将Queue重命名为其他名称,因为其他一些开发人员或已经运行的功能可能会使用它。 (并且未设置Azure命名空间,如此处https://stackoverflow.com/a/63527807/12425844所示)

示例:

a)原始队列:产品

b)测试队列:测试

2。我们还具有Azure功能来拾取队列,因此也要重命名服务总线触发器。

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

3。确保解决方案中还运行了Azure Functions。

4。创建一个Azure Functions local.settings.json

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...