如何在Google Cloud PubSub上实现请求-响应模式?

问题描述 投票:1回答:1

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

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

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

看到其他经纪商如RabbitMQ有 "reply-to "选项。Google PubSub上有类似的功能吗?

这样的话,我就可以在客户端A上模拟一个 "同步 "操作,只有在处理response完成后才向用户回复,而不是每次都在前端处理这个检查。

谢谢您!我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序),我有多个客户端A(主应用程序)。

google-cloud-platform rabbitmq publish-subscribe google-cloud-pubsub request-response
1个回答
2
投票

将发布者与订阅者解耦是Cloud PubSub的核心功能之一,它遵循的是 发布-订阅模式. 目前,Cloud PubSub 不支持从订阅者直接向发布给定消息的实体发送响应。

您可以通过包含有关发布给定消息的客户机 A 实例的信息来解决这个问题,这样客户机 B 就可以在处理结束后确定要通知客户机 A 的哪个实例。例如,客户端B可以直接向发布者发送RPC,或者如果客户端A的实例很少,它们可以各自拥有专门的主题,作为订阅者接收 "处理完成 "消息(在客户端B是发布者的主题上)。

潜在的问题要注意,同时你要考虑正确的方法。

  • 云PubSub至少提供一次交付。有可能向订阅者发送重复的消息,您的系统需要对此有弹性。
  • 如果客户机A或客户机B的某个实例在您的流程中的任何时候崩溃,会发生什么?会不会引入处理错误的重复支付的风险?
© www.soinside.com 2019 - 2024. All rights reserved.