【问题标题】:How to implement a request-response pattern on Google Cloud PubSub?如何在 Google Cloud PubSub 上实现请求-响应模式?
【发布时间】:2020-08-12 14:29:55
【问题描述】:

我有多个客户端 A(主应用程序)和多个客户端 B(支付服务)。

如果我从客户端 A 发布一条消息,该消息将在客户端 B 上处理和回答(在另一个主题中发布答案),如何在客户端 A 上捕获此答案?

问题是客户端A有多个实例,所以我不能保证触发请求的同一个实例会收到响应(PubSub会随机选择一个实例)。

看到像 RabbitMQ 这样的其他代理有“回复”选项。 Google PubSub 上有类似的东西吗?

这样,我可以在客户端 A 上模拟“同步”操作,并仅在处理/响应完成时回复用户,而不是每次都在前端处理此检查。

谢谢!

【问题讨论】:

    标签: google-cloud-platform rabbitmq publish-subscribe google-cloud-pubsub request-response


    【解决方案1】:

    将发布者与订阅者解耦是 Cloud Pub/Sub 的核心功能之一,遵循 publish-subscribe pattern。 Cloud Pub/Sub 目前不支持将订阅者的响应直接发送到发布给定消息的实体。

    您可以通过包含有关发布给定消息的客户端 A 实例的信息来解决此问题,因此客户端 B 可以确定在处理完成后通知客户端 A 的哪个实例。例如,客户端 B 可以直接向发布者发送一个 RPC,或者如果客户端 A 的实例足够少,它们每个都可以有专门的主题,在那里他们作为订阅者接收“处理完成”消息(关于客户端 B 是出版商)。

    在考虑正确方法时需要注意的潜在问题:

    • Cloud Pub/Sub 提供至少一次交付。有可能向订阅者发送重复的消息,您的系统需要对此具有弹性。
    • 如果客户端 A 或客户端 B 的给定实例在您的流程中的任何时候崩溃,会发生什么情况?是否会带来处理错误/重复付款的风险?

    【讨论】:

      猜你喜欢
      • 2013-09-01
      • 2011-03-04
      • 1970-01-01
      • 2018-06-22
      • 2021-11-19
      • 2022-08-18
      • 1970-01-01
      • 2013-04-22
      • 2021-04-28
      相关资源
      最近更新 更多