Spring Webflux 如何等待 webhook
How can Spring Webflux wait for a webhook
我有一个基于 GraphQL Websocket 的应用程序,我需要在其中等待客户付款。订阅处理程序应该
- 向支付网关发送激活支付终端的请求。
- 等待付款后调用的 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
)。
如果您之后有任何具体问题,我建议您创建一个新问题。
我有一个基于 GraphQL Websocket 的应用程序,我需要在其中等待客户付款。订阅处理程序应该
- 向支付网关发送激活支付终端的请求。
- 等待付款后调用的 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
)。
如果您之后有任何具体问题,我建议您创建一个新问题。