Spring Webflux 如何等待 webhook

How can Spring Webflux wait for a webhook

我有一个基于 GraphQL Websocket 的应用程序,我需要在其中等待客户付款。订阅处理程序应该

  1. 向支付网关发送激活支付终端的请求。
  2. 等待付款后调用的 webhook 进行进一步处理。

很抱歉,我无法 post 任何代码,因为在第 1 步之后,我无法找到有关在此中使用哪些构造(如 Mono 或 PubSub)“等待”的详细信息用例。

如何将传出请求与 webhook 调用相关联?

我可以提供使我的问题更清楚所需的任何其他详细信息。

信息仍然太少,但让我粗略地介绍一下它的工作原理。

向支付网关发送请求后,我们需要做两件事。

  • 创建可以向其发送信号的流(例如 Mono
  • 创建(设备或事务)ID 和流之间的映射。首先,您可以使用一个简单的 Map ,它也可以通过 webhook 访问(通过服务)。对于生产,您可能会考虑更复杂的方法。

当 webhook 收到请求时,您在流中查找 ID 并向其发送信号(也可能是错误信号)。任何订阅流的人现在都会收到该信号并可以继续。

现在要使用什么构造。可能有几种选择,一种是使用Sink。这是一些 pseudo-code(!):

在发送付款请求的方法中:

activateTerminal(paymentDetails);
transactionSink = Sinks.empty();
transactionMap.put(deviceId, transactionSink);
return transactionSink.asMono();

网络钩子内部:

transactionSink = transactionMap.get(deviceId);
transactionSink.tryEmitEmpty();

最后一条语句完成 Mono,因此“等待”它的任何人都会收到通知。

请仅将此答案理解为一个概念。您需要仔细查看的内容是:

  • 如何存储关联
  • 向流发送信号的最合适方式 (Mono)。

如果您之后有任何具体问题,我建议您创建一个新问题。