Azure函数 - c# - 带有Blob绑定的ServicebusTrigger

时间:2017-10-12 04:59:54

标签: c# python azure-storage-blobs azure-functions azure-servicebus-queues

我有一个带有servicebus触发器和blob输入绑定的python函数。 blob的名称与队列消息的内容匹配。 我的function.json文件看起来像这样:

{
"bindings": [
    {
    "type": "serviceBusTrigger",
    "name": "inputMessage",
    "connection": "Omnibus_Validation_Listen_Servicebus",
    "queueName": "validation-input-queue",
    "accessRights": "listen",
    "direction": "in"
    },
    {
    "type": "blob",
    "name": "inputBlob",
    "path": "baselines/{inputMessage}",
    "connection": "Omnibus_Blob_Storage",
    "direction": "in"
    }
],
"disabled": false
}

它的工作就像一个魅力。

我要创建一个具有相同绑定的C#函数,但它似乎不起作用。 我使用了相同的function.json文件。

我有project.json个文件:

{
    "frameworks": {
        "net46": {
            "dependencies": {
                "WindowsAzure.Storage": "8.5.0"
            }
        }
    }
}

和我的run.csx文件看起来像这样:

public static void Run(string inputMessage, Stream inputBlob, TraceWriter log)
{
    log.Info($"C# ServiceBus queue trigger function processed message: {inputMessage}");
}

当我保存/运行该功能时,我收到此错误:

  

函数($ import-baseline)错误:Microsoft.Azure.WebJobs.Host:错误索引方法'Functions.import-baseline'。 Microsoft.Azure.WebJobs.Host:'inputMessage'没有绑定参数。

这种绑定的python和c#sdk之间有什么区别吗?

1 个答案:

答案 0 :(得分:0)

如果我在function.json文件中将输入blob路径与baselines\{serviceBusTrigger}baselines\{inputMessage}绑定,我也可以在我身边重现它。

我不确定当前是否支持集成输入servicebus队列和输入blob。我们可以将我们的feedback提供给Azure功能团队。

如果Azure 存储队列可以接受,我们可以使用Azure存储队列触发器来执行此操作。我测试它在我身边,它工作正常。

enter image description here

run.csx文件

using System;
using System.Threading.Tasks;

public static void Run(string myQueueItem, Stream inputBlob, TraceWriter log)
{
    log.Info($"C# storage queue trigger function processed message: {myQueueItem}");
    StreamReader reader = new StreamReader(inputBlob);
    string text = reader.ReadToEnd();
    log.Info(text);
}

<强> function.json

{
  "bindings": [
    {
      "type": "blob",
      "name": "inputBlob",
      "path": "incontainer/{queueTrigger}",
      "connection": "testweblog_STORAGE",
      "direction": "in"
    },
    {
      "type": "queueTrigger",
      "name": "myQueueItem",
      "queueName": "myqueue",
      "connection": "testweblog_STORAGE",
      "direction": "in"
    }
  ],
  "disabled": false
}