我对Hyperledger布一个Java SDK基于客户端和我能够连接并发送交易建议请求,创建总帐条目和查询台账。
我与注册并听取阻止和CHAINCODE事件挣扎。我想启动客户端,专门用于监听和处理这些事件的一个单独的线程。
我发现迄今:
HFClient client = HFClient.createNewInstance();
Channel channel = client.newChannel("channel01");
EventHub eventHub = client.newEventHub("eh01", "grpc://abc.xyz.us:7053");
channel.addEventHub(eventHub);
除了这个我迷路了。有人可以请张贴的如何做到这一点的样本?
一旦你添加eventhub,你需要注册此事件的利斯特。请看下面的例子。
BlockListener blockListener = new BlockListener() {
@Override
public void received(BlockEvent arg0) {
Block block = arg0.getBlock();
System.out.println("BLock All FIelds :" + block.getAllFields());
System.out.println("BLock Number :" + arg0.getBlockNumber());
System.out.println("THis is buyer Listener..");
}
};
channel.registerBlockListener(blockListener);
每当块被添加到blockchain不管你就会将收到的方法写会被调用。希望这会帮助你。
对于交易事件,你需要另一个监听器:
String chaincodeEventListenerHandle = channel.registerChaincodeEventListener(
Pattern.compile(".*"), Pattern.compile(Pattern.quote(EXPECTED_EVENT_NAME)),
(handle, blockEvent, chaincodeEvent) -> {
final String es = blockEvent.getPeer() != null
? blockEvent.getPeer().getName()
: blockEvent.getEventHub().getName();
System.out.format(
"Chaincode event with handle: %s"
+ ", thread name: %s"
+ ", chaincode Id: %s"
+ ", chaincode event name: %s"
+ ", transaction id: %s"
+ ", event payload: \"%s\""
+ ", from eventhub: %s\n",
Thread.currentThread().getName(),
handle,
chaincodeEvent.getChaincodeId(),
chaincodeEvent.getEventName(),
chaincodeEvent.getTxId(),
new String(chaincodeEvent.getPayload()),
es);
});
...
channel.unregisterChaincodeEventListener(chaincodeEventListenerHandle);