这是我的要求:我收到验证某些数据/记录的请求。记录将根据每个请求发送到SQS队列,以供另一个服务/组件进一步处理。消息结构如下所示:
messageId: //a unique message id
requestId: //request id common between all messages/records for that request
record_body: {//key-value pairs}
一切正常。现在我想弄清楚何时从队列中读取了具有相同请求id的所有消息(即,该请求id没有更多消息)。 我的想法是在每次读取时将每条消息/记录写入数据库,然后使用另一个可以触发的预定服务(通过cloudwatch)检查每个请求的记录数,最后将请求的状态更新为如果数据库中的记录数等于原始请求中的记录数,则完成。 我只是想分享一下,看看是否有其他人有这种要求以及他们是如何接近它的!
答案 0 :(得分:0)
这个怎么样?
包括请求数和当前请求到队列。确保请求以相同的顺序进入队列。
示例 - 您有4个requestId请求 - abc
您将按顺序将包含(1:4)(2:4)(3:4)(4:4)的每个请求发送到队列。
这样当您从队列中读取时,您将最后阅读(4:4)并且您将知道您已经处理了所有4个。
另一种方法是在每条消息中包含消息中的请求总数,并在处理每条消息时检查它是否与原始消息匹配,因为现在消息中有总数。 (通过查询数据库)。