【发布时间】:2023-03-23 04:38:01
【问题描述】:
我有一个 API,它在 POST 请求中接收有效负载并将其插入到 Amazon SQS 队列中,以便其他服务可以使用该消息。基本思想是 API 需要快速将响应返回给调用者,并在稍后的某个时间继续进行繁重的处理。
POST 请求模型:
class Company
{
public int CompanyId { get; set; }
public List<Person> People { get; set; }
}
class Person
{
public int Id { get; set; }
public int CompanyId { get; set; }
public string FirstName { get; set; }
....
....
}
我最初的想法是将整个Company 插入SQS。但是在某些公司工作的人数可能很大,因此由于 SQS 规定的 256kb 消息大小限制,将整个 Company 插入 SQS 是不可能的。
所以现在我正在对 API 进行更改,以便将 Company 插入到 SQS 中,而不是插入一个 Person 并且消费者将处理 Company-Person 关系。示例:如果CompanyId: 1 的公司有 1000 人,则 API 将向 SQS 插入 100 条消息(每人一条消息,每个人的 CompanyId 属性设置为 1)。
这对于序列化后大于 256kb 的公司来说似乎很好,但对于序列化后小于 256kb 大小限制的公司来说效率非常低。
问题:我应该如何有效处理各种规模的公司(处理序列化后产生json 小于256kb 的公司以及产生json 大于256kb 的公司)序列化)。
注意:我知道有一个 Java 库支持高达 2GB SQS 消息大小,但我找不到任何等效的 AWS 的官方 .NET 库 可以处理这种情况。
【问题讨论】:
标签: c# .net amazon-web-services amazon-sqs