需要在corda节点之间共享静态可变映射

时间:2017-09-21 20:33:14

标签: corda

美好的一天,

我一直在尝试将corda框架的消息传递层从AMQP更改为FTL。我试过通过创建一个地图来实现这一点,我将InboxSubscriber对象与特定的p2p地址相关联。可以从参数target:MessageRecipients中检索p2p地址,它只是一个字符串。我在ArtemisMessagingServer类中添加了一个静态MutableMap,并添加了一个相应的InboxSubscriber对象,该对象由正在初始化的服务器的p2p地址键入。我曾希望这个地图对所有的corda节点都是一个,但我注意到实际上每个节点都有一个地图,因此我无法为其他节点获取相应的InboxSubscriber对象。是否存在可以创建此映射然后由网络中的所有节点检索的特定位置?

Changes in ArtemisMessagingServer.kt Changes in the NodeMessagingClient.kt

1 个答案:

答案 0 :(得分:0)

要共享此信息,您需要创建Corda服务。然后,该服务将托管在节点上,您可以从流中请求信息。

有关提供服务的节点的示例,请参阅Oracle示例here。在build.gradle文件中,我们将NodeB列为提供net.corda.examples.primes_oracle服务。

然后我们定义服务here,并且处理程序流用于查询提供服务的节点here

本质上,该服务将是NodeB上的长期对象。当其他节点查询它时,它会从该对象中提取信息并将其作为流的一部分发送回其他节点。