当前位置: 首页 > 知识库问答 >
问题:

Azure函数从计时器触发器输出服务总线绑定

范成周
2023-03-14

我正在运行Visual Studio 2017预览并在本地运行函数代码,我正在使用开箱即用的Azure函数项目模板。我试图让一个由定时器触发的Azure函数使用输出绑定向服务总线队列发送消息,但WebJob SDK似乎无法将输出绑定到字符串类型。

结合

 "bindings": [
    {
      "type": "serviceBus",
      "name": "msg",
      "queueName": "myqueue",
      "connection": "ServiceBusQueue",
      "accessRights": "manage",
      "direction": "out"
    }
  ]

定时器功能

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;

namespace MyFunctionApp
{
    public static class TimerTrigger
    {
        [FunctionName("TimerTriggerCSharp")]
        public static void Run([TimerTrigger("1 * * * * *", RunOnStartup = true)]TimerInfo myTimer, TraceWriter log, out string msg)
        {
            log.Info($"C# Timer trigger function executed at: {DateTime.Now}");

            msg = "Hello!";
        }
    }
}

错误消息

TimerTriggerCSharp: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.TimerTriggerCSharp'.Microsoft.Azure.WebJobs.Host:无法绑定参数'msg'以键入字符串

是我在设置中遗漏了一个步骤,还是服务总线绑定真的不支持< code>out参数的字符串

共有1个答案

尉迟墨竹
2023-03-14

看起来您缺少ServiceBus的绑定属性。我只使用了ICollector

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer,
                       TraceWriter log,
                       [ServiceBus("%QueueName%", Connection = "ServiceBusConnection", EntityType = Microsoft.Azure.WebJobs.ServiceBus.EntityType.Queue)] out string msg)
{
   msg = "My message";
}

要使用VS2017预览工具在本地运行,还需要在<code>local.settings中定义以下本地设置。json与您的<code>ServiceBus

{
  "Values": {
     "ServiceBusConnection" : "Endpoint=sb://.....your connection",
     "QueueName": "my-service-bus-queue
   }
}
 类似资料:
  • 在.NET core 2.0中使用创建时,我遇到了一个问题。 在体系结构中,当在用于创建用户的队列中创建新消息时,服务必须接收该消息并根据其中的信息在数据库中创建用户。 在Visual Studio2017中,我在下创建了一个新项目。 这种的正确实现是什么?在GitHub上有什么例子吗?提前道谢。

  • 我一直在尝试为Azure函数实现DI,其中函数由ServiceBus触发(本例中为主题/订阅): 我在以下网站上阅读了有关Azure Functions和DI的信息: https://mcguirev10.com/2018/04/03/service-locator-azure-functions-v2.html https://blog.wille-zone.de/post/azure-func

  • 我目前正在评估使用一个服务总线和azure函数来触发一些需要通过下游api调用来完成的工作。这都是相当标准的,只是我没有很好地处理当下游系统过载和/或返回header到trottle时会发生什么(即每分钟最大调用数/等)。对于队列触发器的强制节流,我们似乎没有任何动态控制。 我知道我们可以手动设置最大并发,但这并不一定解决问题,因为我们无法控制下游系统,需要考虑它随时可能脱机或变慢。 假设消费计划

  • 我已经创建了一个Azure webwork,它将向服务总线队列发送强类型消息,并成功发送。 我想创建另一个webjob,只要servicebus队列中有消息,就会触发该webjob。请在下面找到我正在尝试的代码。出于某种原因,尽管servicebus队列中有消息,但当我在本地运行webjob时,webjob未被触发并出现错误。 错误: 代码: 有谁能帮我解决这个问题吗? 谢谢

  • 我有一个Azure函数,使用Python编写的Cosmos DB触发器,该触发器有到Cosmos DB的内外绑定,所以当容器中的文档更新时,我会在另一个容器中创建一个新文档。我想在第二个容器中创建一个服务器端的Cosmos DB触发器,在创建新文档时需要触发这个触发器。在我看到的例子中,他们展示了如何使用Python SDK来执行触发器,但我想知道是否有可能使用函数中已有的绑定来执行触发器,而不是

  • 我正在尝试绑定到Azure服务总线触发函数中的。 我的目标是处理死信队列消息并完成它们。 问题是它无法绑定到MessageReceiver类。 微软蔚蓝色的网络作业。主机:错误索引方法“Function1”。微软蔚蓝色的网络作业。主机:无法将参数“receiver”绑定到类型MessageReceiver。确保绑定支持参数类型。如果您使用的是绑定扩展(例如Azure Storage、Service