首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在web api中使用消息传递(Amazon SQS)将创建的id返回给客户端

如何在web api中使用消息传递(Amazon SQS)将创建的id返回给客户端
EN

Stack Overflow用户
提问于 2016-09-30 17:56:52
回答 1查看 382关注 0票数 1

刚刚开始使用Amazon SQS服务,所以想知道是否有人可以引导我进入正确的方向。如果我将rest web-api接口暴露给客户端,并且在每个http请求之后,我希望将异步消息发送到我的独立服务,该服务负责在数据库中创建特定的实体并处理某些逻辑。如下所示:

代码语言:javascript
复制
        var auctionRegistrationCommand = AuctionRegistrationCommand
            .CreateFromRequest(lotId, request);

        //var sqsClient = new AmazonSQSClient();
        //var response = sqsClient.SendMessageAsync(..resitrationCommaon..);

在创建实体之后,我希望将创建的实体的Id返回给我的客户端,这样它就可以使用它来更新它,或者对rest api进行一些额外的调用。但是我不知道该怎么做。有没有什么模式或方法来支持这样的场景?看到一些使用Amazon SQS的例子会很完美,但一般的解释也会很有帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-10-09 16:10:07

假设您的两个系统是S1和S2,其中会发生以下情况:

  1. S1向SQS发送一条消息。此步骤是asynchronous.
  2. S2创建所需的实体。
  3. S1应将新创建的实体id通知调用者。

考虑到异步系统的本质,#3并不简单。例如,你不知道S2什么时候会处理你的请求。

可能的解决方案:

  1. S1向SQS发送一条消息。SQS返回一个MessageId作为响应。您将此MessageId返回给客户端。
  2. S1和S2都有一个共享的数据存储(例如,Memcache、MySQL等)。它存储MessageId到entity-id的映射。每当使用MessageId处理消息并创建新实体时,它都会在shared data store.
  3. Clients poll S1中更新此映射。只要数据存储区不为空,S1就会返回映射。

可以在here中找到来自SQS的MessageId的文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39788745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档