【问题标题】:Output multiple Brokered Messages to an Azure Service Bus Topic(s) with Azure Functions使用 Azure Functions 将多个代理消息输出到 Azure 服务总线主题
【发布时间】:2017-07-20 12:26:42
【问题描述】:

有没有办法在 Azure Functions 中将多个代理消息输出到 Azure 服务总线?默认情况下,您可以输出单个代理消息,但不能输出多个。

目前正在使用 SDK 来执行此操作,但想知道是否有一种方法可以使用输出来执行此操作...

谢谢

【问题讨论】:

    标签: c# .net azure azureservicebus azure-functions


    【解决方案1】:

    As per the documentation on ServiceBus output bindings:

    要在 C# 函数中创建多条消息,您可以使用 ICollector<T>IAsyncCollector<T>。调用 Add 方法时会创建一条消息。

    这是一个使用 ICollector 的简单示例(也直接来自文档):

    public static void Run(TimerInfo myTimer, TraceWriter log, ICollector<string> outputSbQueue)
    {
        string message = $"Service Bus queue message created at: {DateTime.Now}";
        log.Info(message); 
        outputSbQueue.Add("1 " + message);
        outputSbQueue.Add("2 " + message);
    }
    

    我个人发现,所有受支持的输入/输出绑定都有很好的文档记录,并且可以在我在此处显示的链接中轻松获得示例。只需选择您正在使用的适当绑定(如果它不是服务总线)

    【讨论】:

    • 小小的挑剔 - 你应该更喜欢异步版本。尤其是 Azure 服务总线发送的 IO 绑定操作。
    • 我发现输入/输出绑定的文档记录很差。例如,如果它不是文档中使用的示例,如何知道存在接受 TimerInfo 对象的重载?各种 Run 重载在哪里列出?
    • 我同意他们的文档记录很差,需要更多示例。这个答案也不清楚你如何绑定它。将 ICollector 绑定到 ASB 队列的属性是什么?
    • @IronSean 你是说这个吗? docs.microsoft.com/en-us/azure/azure-functions/…
    • @JesseCarter 该页面当前显示了将方法的返回值绑定到服务总线队列的示例,但没有显示如何为 ICollector 对象设置绑定。但是,是的,如果有必要使用此模式,我确实打算将 ICollector 对象的绑定注释添加到此答案中。
    【解决方案2】:

    此外,Functions 构建在 WebJobs SDK 之上;因此,如果您可以在 SDK 中进行绑定,您可以在 Functions 中执行相同的操作(有一些极端情况例外)。

    【讨论】:

    • 谢谢 - 我已经这样做了,我必须根据收到的消息将消息发送到不同的队列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多