首页 > 解决方案 > $$Error:Counterparty 在未注册的消息类流的意外时间发送会话拒绝消息

问题描述

我想使用 oraclizer 进行外部服务调用。所以我试图运行下面给出的示例文件:

示例 Oraclize

运行后,我得到一个错误 -

交易对手在意外时间发送会话拒绝消息,消息类别为 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 调用抛出了这个错误。

标签: corda

解决方案


我是 Oraclize 的 Mauro,你在使用 Corda 的公共测试网吗?如果没有,您应该按照本 指南使用我们的服务。如果您正在使用它,那么您应该等待几个工作日,因为我们仍在新的测试网上测试该服务。


推荐阅读