corda - $$Error:Counterparty 在未注册的消息类流的意外时间发送会话拒绝消息
问题描述
我想使用 oraclizer 进行外部服务调用。所以我试图运行下面给出的示例文件:
运行后,我得到一个错误 -
交易对手在意外时间发送会话拒绝消息,消息类别为 it.oraclize.cordapi.flows.OraclizeQueryFlow 未注册
在流中,调用 OraclizeQueryAwaitFlow 流,该流又调用 OraclizeQueryFlow。在这个流程中,有一个 sendAndReceive 调用,发生如下:
@InitiatingFlow
@StartableByRPC
class OraclizeQueryFlow (val datasource: String, val query: Any, val proofType: Int = 0, val delay: Int = 0) : FlowLogic<String>() {
companion object {
object PROCESSING : ProgressTracker.Step("Submitting the query.")
@JvmStatic
fun tracker() = ProgressTracker(PROCESSING)
@JvmStatic
val console = loggerFor<OraclizeQueryFlow>()
}
override val progressTracker = tracker()
fun console(a: Any) = loggerFor<OraclizeQueryFlow>().info(a.toString())
// start OraclizeQueryFlow datasource: "URL", query: "json(https://min-api.cryptocompare.com/data/price?fsym=USD&tsyms=GBP).GBP", proofType: 16, delay: 0
// start OraclizeQueryFlow datasource: identity, query: hello, proofType: 0, delay: 0
@Suspendable
override fun call(): String {
val oraclize = serviceHub.identityService
.wellKnownPartyFromX500Name(OraclizeUtils.getNodeName()) as Party
progressTracker.currentStep = PROCESSING
val session = initiateFlow(oraclize)
val query = Query(datasource, query, delay, proofType)
val queryId = session.sendAndReceive<String>(query).unwrap { it }
console("Query id: $queryId")
return queryId
}
}
在检查日志时,我碰巧发现 sendAndReceive 调用抛出了这个错误。
解决方案
我是 Oraclize 的 Mauro,你在使用 Corda 的公共测试网吗?如果没有,您应该按照本 指南使用我们的服务。如果您正在使用它,那么您应该等待几个工作日,因为我们仍在新的测试网上测试该服务。
推荐阅读
- flutter - Flutter Camera startImageStream 返回 null 的图像
- c++ - 确定给出错误结果的向量之间的长度
- optimization - 是否有通过声明已知和未知变量来解决优化问题的包装库?
- r - Debuggin 函数翻译
- python - 使用分类器进行面部识别的迁移学习
- vb.net - 当我通过按下按钮开始循环时,它会循环一次然后冻结
- python - 隐藏到json pandas python时删除obejct列中的\
- javascript - _.memoize 不会提高性能
- python-3.x - 如何在python中获取堆对象(树)?
- rocksdb - 在 Java 中创建 RocksDB SST 文件以进行批量加载