我有一個基于 GraphQL Websocket 的應用程式,我需要在其中等待客戶付款。訂閱處理程式應該
- 向支付網關發送請求以激活支付終端。
- 等待付款后呼叫的 webhook 以進行進一步處理。
很抱歉,我無法發布任何代碼,因為在第 1 步之后,我無法找到有關在此用例中使用哪些構造(如 Mono 或 PubSub)來“等待”的詳細資訊。
如何將傳出請求與 webhook 呼叫相關聯?
我可以提供使我的問題更清楚所需的任何其他詳細資訊。
uj5u.com熱心網友回復:
資訊仍然太少,但讓我給你一個粗略的草圖,看看它是如何作業的。
在向支付網關發送請求后,我們需要做兩件事。
- 創建一個
Mono可以向其發送信號的流(例如 a ) - 在(設備或事務)ID 和流之間創建映射。首先,您可以使用
Mapwebhook 也可以訪問(通過服務)的簡單程式。對于生產,您可能會考慮一種更復雜的方式。
當 webhook 收到請求時,您會在流中查找 ID 并向其發送信號(也可能是錯誤信號)。訂閱該流的任何人現在都會收到該信號并可以繼續。
現在要使用什么構造。可能有幾種選擇,一種是使用Sink。這是一些偽代碼(!):
在發送支付請求的方法中:
activateTerminal(paymentDetails);
transactionSink = Sinks.empty();
transactionMap.put(deviceId, transactionSink);
return transactionSink.asMono();
網路鉤子內部:
transactionSink = transactionMap.get(deviceId);
transactionSink.tryEmitEmpty();
最后一條陳述句完成了Mono,因此任何“等待”它的人都會得到通知。
請僅將這個答案理解為一個概念。您需要仔細查看的內容是:
- 如何存盤關聯
- 最適合您將信號發送到流的方式 (
Mono)。
如果之后您有任何具體問題,我建議您創建一個新問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/446016.html
標籤:春天 网络套接字 图形 反应式编程 spring-webflux
上一篇:SpringBoot反應式快取
下一篇:通過類方法退出while回圈
