我正在尝试将现有的单一订购者,单一对等超级账本结构系统扩展到2个订单和3个对等实体。我设法添加了一个新订单,以便即使其中一位订购者已下订单,系统也能正常工作。
现在我正在尝试与同行进行相同的操作,但是当其中一个同行失败时,我很难在区块链上保存新记录。
保存时,我正在使用Java SDK将交易建议发送给所有三个对等方-我收到2个成功案例,而一个失败ProposalResponse
-我要过滤掉失败的案例并将成功案例的集合发送给org.hyperledger.fabric.sdk.Channel#sendTransaction(java.util.Collection<org.hyperledger.fabric.sdk.ProposalResponse>)
。
该方法返回CompletableFuture<TransactionEvent>
,我正在使用whenComplete
进行订阅。我注意到,当其中一个对等设备关闭时,future
不会完成,除非离线对等设备再次可用。
系统是如何设计的?我希望即使只有一个同位体可用,结构和SDK也会完成一项任务,然后让同位体联机时进行自我更新。有什么方法可以实现这样的行为?
谢谢!
编辑:
我已经意识到我正在使用sendTransaction
和默认的交易选项,这些选项将所有对等体添加为事件对等体,因此除非他们所有人都接收到事件,否则该交易无法完成。