小编Mid*_*aze的帖子

具有 SQSEvent 和大批量大小的 Lambda 调用多个实例,每个实例处理几个项目

有点背景,我正在使用 Serverless 和 .Net 来创建一个带有 SQS 触发器的 lambda。事件触发器设置为批量大小为 10k,等待时间(Batch Window ie MaximumBatchingWindowInSeconds)为 30 秒。队列的可见性超时设置为近 16 分钟。

现在我已经将 lambda 设置为仅 1 的保留并发并运行了一个测试,我向队列发送了 100 个项目,并希望看到只有一个 lambda 调用正好包含这 100 个项目。

问题是它分离了队列中的项目并改为调用 lambda 5 次,导致创建了五个包作为 lambda 功能的一部分,而不是我想要的一个包。(仅供参考,lambda 的输出会在消息的 s3 中创建包。我希望减少大包。)

现在的问题是:这是预期的行为吗?如果是这样,为什么会这样,当我将队列设置为最多累积 10k 个项目而不是 15 个时。

根据aws 文档,如果有效负载大于 256kb,则 lambda 可以获取比 batchSize 更少的消息,但我的消息非常小,100 条消息远不及 256kb。所以这不可能是原因。

也欢迎提供有关处理此问题的替代方法的建议,现在我正在考虑运行一个事件桥调度程序,该程序使用 SQS ReceiveMessage api 调用 lambda 并创建一个包,但我还必须确保之后正确删除队列.

我在这里有点无能为力,我很感激你们的任何想法。谢谢。

concurrency amazon-sqs amazon-web-services aws-lambda

7
推荐指数
1
解决办法
289
查看次数

是否可以使用.NET Framework与.NET Framework

我一直在试图创建一个完全是.NET Core的新项目,这个项目可以在不同的环境中运行,但我需要添加许多以前在严格的.NET Framework中工作的项目作为参考(4.5 ).

到目前为止,我能够做的是将.NET 461框架添加到项目json中,

"frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ],
      "dependencies": {
        "Microsoft.NETCore.App": {
          "version": "1.0.1",
          "type": "platform"
        },
        "Niloosoft.Hunter.ServicesDataAPI": {
          "target": "project"
        }
      }
    },
    "net461": { }
  }
Run Code Online (Sandbox Code Playgroud)

它成功恢复了包,我甚至设法添加了.NET框架引用,但我似乎无法正确使用它们而且我得到了这个错误.在此输入图像描述

所以,我的问题是,目前是否可以使用我的.NET Framework参考,而无需将预期的框架(因为我需要互操作性)与以下内容交换:

    > #if NET45 
//specific code for .NET 4.5
    > #
Run Code Online (Sandbox Code Playgroud)

需要注意的是,.NETCoreApp不支持我的项目,因此,我确实需要.NET Framework,我只是需要知道我正在尝试做的是否可行.

c# project.json asp.net-core

2
推荐指数
1
解决办法
709
查看次数