Azure ServiceBusQueue函数未在本地触发

gdrx4gfi  于 2023-08-07  发布在  其他
关注(0)|答案(3)|浏览(86)

我只是不明白为什么这个函数不能启动。
我的服务总线队列中有一条活动消息。
我的local.settings.json文件具有正确的队列名称和总线连接字符串,它们在主函数类中被正确引用。
我已经检查了我的代码agaisn 't在微软文档中的例子,它看起来是正确的。
当我在调试中运行它时,CLI选择正确的函数,然后记录获取的主机锁,但不做其他任何事情。
我试过了。。

  • 将;TransportType=AmqpWebSockets添加到连接字符串
  • 在主函数类而不是JSON设置文件中显式键入队列名称
  • 将新消息发送到队列
  • 刷新队列

但它就是不起作用,我想知道还有什么可以尝试?
正在运行以下...
.NET核心- 3.1
Azure核心工具- 3.0
功能版本-3.3.1
掘金
Azure.Messaging.ServiceBus - 7.5.1
Microsoft.Azure.WebJobs.Extensions.ServiceBus - 5.2.0(我正在使用新的ServiceBusReceivedMessage类型)
Microsoft.NET.Sdk.Functions - 3.0.13
我还没有达到发布的阶段,仍然只是让它首先在本地运行。
谢啦,谢啦

public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task Run([ServiceBusTrigger("MessageQueueName", Connection = "ServiceBusConnectionString")] ServiceBusReceivedMessage message, ILogger logger)
        {
            var bus = new AzureBus(Environment.GetEnvironmentVariable("ServiceBusConnectionString", EnvironmentVariableTarget.Process)).SendOnly();
            var endpoint = new Endpoint(bus, logger);

            logger.LogInformation($"Message received from bus - {message}");

            await endpoint.Start();
            await bus.Handle(message);
        }
    }

字符串

bxjv4tth

bxjv4tth1#

TransportType不是连接字符串的有效标记,服务总线客户端库将忽略它。要使用Web Socket传输,最简单的方法是在host.json中指定它:

{
  "extensions": {
    "serviceBus": {
      "transportType" : "amqpWebSockets"          
  }
}

字符串

l2osamch

l2osamch2#

你能分享一下你的主类的代码片段吗?它应该看起来像这样:

public static async System.Threading.Tasks.Task RunAsync([ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")]
    Message myQueueItem, string lockToken, Microsoft.Azure.ServiceBus.Core.MessageReceiver messageReceiver, ILogger log)

字符串
如果使用MessageReceiver,您需要自己处理DeadLetter/完成消息
编辑:确保你有存储模拟器运行

yruzcnhs

yruzcnhs3#

你能检查安装的nuget包中的Microsoft.NET.sdk.Functions的版本吗?应该是= 4.2.0。

相关问题