Java 从SNS读取不同类型的事件+;SQS

Java 从SNS读取不同类型的事件+;SQS,java,amazon-web-services,aws-lambda,amazon-sqs,low-level,Java,Amazon Web Services,Aws Lambda,Amazon Sqs,Low Level,我正在创建一个系统,在这个系统中,我需要从SNS+SQS组合中读取几种不同类型的事件,也就是说,有一个现有的系统将不同类型的事件放入SNS主题,并且有一个SQS订阅了这个SNS主题。之后,有一个Lambda(L1)被SQS触发 以下是许多SQS事件中的两个示例: { "event_type" : "started", "parent_id" : "a1", "timestamp&qu

我正在创建一个系统,在这个系统中,我需要从SNS+SQS组合中读取几种不同类型的事件,也就是说,有一个现有的系统将不同类型的事件放入SNS主题,并且有一个SQS订阅了这个SNS主题。之后,有一个Lambda(L1)被SQS触发

以下是许多SQS事件中的两个示例:

{
    "event_type" : "started",
    "parent_id" : "a1",
    "timestamp" : "t1"
}

{
    "event_type" : "completed",
    "parent_id" : "a1",
    "child_id" : "a2",
    "timestamp" : "t2"
}
在获取这些事件时,L1会按照如下方式将这些事件存储在NoSQL存储中(例如DynamoDB)(按父id分组并按时间戳排序,即a1-->列表):

问:你能帮我做一下我应该在L1内部为这些活动做的低级数据建模吗。我甚至应该尝试自己建模,还是仅仅使用对象映射器(Gson或Jackson)来完成这项工作

此外,还有另一个Lambda(L2),它读取与给定的父_id对应的事件(从DB),进行服务调用以获取所有事件的附加元数据,用这些附加字段准备另一个事件列表并返回给调用者

e、 g

你能给我一些设计这个系统的建议吗

如有任何建议,将不胜感激


感谢第一个问题,我的建议是,您不需要映射到任何Pojo,只需映射到具有键/值的映射即可。然后根据事件类型,您可以执行自己的业务逻辑,例如store to DynamoDB


然后,您可以为另一个lambda(Lambda2)启用DynamoDB流,以继续执行下一步。

欢迎使用Stackoverflow!请阅读并遵循指南。我认为你的问题非常广泛,可以进行更长时间的讨论(更适合顾问的工作,而不是随便找个人回答)。为了得到一个好的答案,请尝试更具体一些。
{
    "a1" : [
                {
                    "event_type" : "started",
                    "parent_id" : "a1",
                    "timestamp" : "t1"
                },
                {
                    "event_type" : "completed",
                    "parent_id" : "a1",
                    "child_id" : "a2",
                    "timestamp" : "t2"
                }
            ]
}
        {
            "event_type" : "started",
            "parent_id" : "a1",
            "timestamp" : "t1",
            "metadata" : {
                "m1" : "abc",
                "m2" : "xyz"
            }
        },
        {
            "event_type" : "completed",
            "parent_id" : "a1",
            "child_id" : "a2",
            "timestamp" : "t2",
            "metadata" : {
                "m3" : "lmn"
            }
        }