首页 > 解决方案 > Corda:在响应者流中发出 HTTP 请求?

问题描述

是否可以从响应程序流中向对方的外部服务发出 HTTP 请求?

我的用例是一方使用交换节点调用“请求令牌”流。该交换节点发出 HTTP 请求(在响应程序流上)以将现金从该方帐户转移到外部支付系统中的交换帐户。资金实际达到计数的事件以及因此代币的发行将在另一个流程中发生。

如果不行,有什么替代设计可以完成任务?

标签: corda

解决方案


以这种方式发出 HTTP 请求并不总是一个好主意。

除非您非常仔细地考虑重播前一个检查点时会发生什么。所以重复数据删除和幂等性是关键考虑因素。加上如果目标关闭会发生什么?此外,这可能会耗尽纤程运行的线程池。

流在纤维上运行。CordaServices 可以生成自己的线程,线程可以阻塞 I/O,纤程只能在短时间内这样做,我们不保证释放资源或排序,除非它是 DB。线程也可以注册可观察对象

真正的挑战是重启能力,为此他们需要通过随机杀戮来测试他们的代码。

您需要注意,在发生崩溃时可以重播步骤。这适用于任何重新启动工作的基于服务器端工作的系统。

实际上,您应该:

  • 第 1 步)执行账本上的 Corda 交易以将一个或多个资产移动到锁定状态(类似于 XA 的“准备”)。公证成功后,
  • 步骤 2) 使用成功或失败的幂等调用执行账外交易。当我们知道它是成功还是失败时,移动到
  • 步骤 3) 执行第二个 Corda 交易,该交易要么恢复资产状态,要么将其移至预期的最终状态

推荐阅读