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

将多个Blob输入传递给QueueTrigger Azure函数的最佳方式

顾高扬
2023-03-14

触发后,生成3个XML文件,完成后,将其ftp到站点。

我有一个HTTP Trigger Azure函数,运行时将构造3个XML文件并将它们保存到Azure存储Blob容器中。因为有多个输出,并且需要控制输出路径/文件名,所以我使用命令式绑定方法,并在函数中使用< code>IBinder outputBinder。这一切都很好。blob存储中输出路径的一个示例是< code > export/2017-03-22/file-2017-03-22t 12 . 03 . 02 . 54 . XML 。文件在一个有日期的文件夹中,每个文件名都有时间戳以确保唯一性。

当所有3个文件生成后,我想触发另一个功能,将这些sFTP到一个网站。现在我最初认为我应该使用blob触发器,但是我不知道如何触发文件名和路径是动态的输入。我在blob触发器文档中找不到这样的例子。

然后我想我可以将我的HTTP触发器输出到一个声明性绑定,并将XML文件输出到我的blob存储中的< code>outhtml" target="_blank">going容器中,我的blob触发器可以查看该容器。然而,这也是可行的,因为我的职能是消费计划,每天最多有10分钟处理新的blobs。

因此,记录在案的替代方案是使用队列触发器。我可以输出到我的队列并让队列触发器正常工作,但是我如何将3个XML流传递给我的QueueTrigger函数呢?

我想作为一种备用方案,我可以发布一个包含构造的XML的Azure存储路径的对象,然后使用Storage SDK来获取流,并使用它来发布到FTP,但是将这些存储Blob流作为输入传递给我的QueueTrigger会更有效吗?

共有1个答案

锺离赤岩
2023-03-14

我认为您使用队列触发器的方法是有道理的。我会构建这样一条信息

public class QueueItem
{
    public string FirstBlobPath { get; set; }
    public string SecondBlobPath { get; set; }
    public string ThirdBlobPath { get; set; }
}

然后在队列处理函数中使用声明性绑定,类似

{
  "bindings": [
    {
      "type": "queueTrigger",
      "name": "item",
      "direction": "in",
      "queueName": "myqueue",
      "connection":"...",    
    },
    {
      "type": "blob",
      "name": "file1",
      "path": "mycontainer/{FirstBlobPath}",
      "connection": "...",
      "direction": "in"
    },
    {
      "type": "blob",
      "name": "file2",
      "path": "mycontainer/{SecondBlobPath}",
      "connection": "...",
      "direction": "in"
    },
    {
      "type": "blob",
      "name": "file3",
      "path": "mycontainer/{ThirdBlobPath}",
      "connection": "...",
      "direction": "in"
    }
  ],
  "disabled": false
}

和功能

public static void Run(QueueItem item, Stream file1, Stream file2, Stream file3)
{
}
 类似资料:
  • 我有一个输入,当按“回车键”调用一个函数来重新加载列出的项目时,我需要。为此,我正在使用 当在loadItems调用中使用常量值时,这种方法效果很好,但只要我想传递输入值,就会出现一个错误: 这就是我得到的

  • 问题内容: 我很好奇Go中是否有可能。我有多种方法的类型。是否可以有一个函数,该函数需要一个方法参数,然后将其称为类型? 这是我想要的一个小例子: Go认为type 有一个称为的方法,而不是用传入的方法名称替换它。 问题答案: 是的,有可能。您有2(3)个选项: 规范:方法表达式 该表达式产生的功能与第一个参数等效,但具有一个显式接收器。它有签名。 在这里,方法接收器是显式的。您只需将方法名称(具

  • 问题内容: 哦,我的话我是个傻瓜。 调用函数时,我只是省略了第二个和第三个参数。像个傻瓜。因为那就是我。原来愚蠢的问题如下: 这似乎是它必须做一个很平常的事,但是我无法找到相关的教程,我太无知了约,并弄明白自己。 我的文件中有一个C函数。 (您可能会猜到,我最初的参数为double 而不是void ,但无法弄清楚在Python方面该怎么做。我当然很想将其改回来,但我并不挑剔只要有效。) 我用它制作

  • 问题内容: 在我的我有一个按钮。我想通过在方法中传递多个参数来为其添加动作。 问题答案: 也许你可以做这样的事情 根据您的要求创建标签值并保持其完整性。

  • 问题内容: 在采用可变数目从该给出的函数被调用iterables的。 如果我有一个生成元组的生成器,这些元组通常在原位打开,该如何命名? 以下代码不起作用,因为每个生成的元组均作为map的不同参数给出: 没有生成器,要映射的所需参数可能如下所示: 问题答案: 您需要删除的电话: 这将调用,时间,应在何处接受一个参数。 在Linux上 ,如果要接受两个参数,则可以使用lambda调用,例如:

  • 嘿,伙计们,我是一个完全的初学者,在Java,我正在尝试编写一个程序,以这样的方式:油漆公司已经确定,每115平方英尺的墙壁空间,一加仑油漆和8小时的劳动将需要。 这家公司的人工费为每小时18美元。 编写一个程序,允许用户输入需要粉刷的房间数量和每加仑油漆的价格。它还应该要求每个房间有平方英尺的墙壁空间。程序应该具有返回以下数据的方法: 所需油漆的加仑数 所需劳动时数 油漆成本 人工费 喷漆作业的