2.9.1版本的fisco bcos-Java-SDK有关合约事件推送问题。
查看官方文档,在JavaSDK章节的合约事件推送一节中,所给例子的注册事件使用了eventSubscribe,一开始不知道是谁的实例,查看源码发现大概率是"org.fisco.bcos.sdk.eventsub"包下的“EventSubscribe”接口,然而此接口不可实例化,只可实例化其实现类“EventSubscribeImp”,但是该实现类有构造函数:public EventSubscribeImp(GroupManagerService groupManagerService, EventResource eventResource, Integer groupId),请问这三个参数如何才能获取准确呢?我是想拿来获取某个合约下某个用户的全部交易信息(转账信息)。
你可以通过 org.fisco.bcos.sdk.BcosSDK的getEventSubscribe方法,获取已经实例化的事件订阅对象,需要填入的groupId为你的链的群组ID,默认为0.
public EventSubscribe getEventSubscribe(Integer groupId) {
return EventSubscribe.build(this.groupManagerService, this.eventResource, groupId);
}
你可以通过 org.fisco.bcos.sdk.BcosSDK的getEventSubscribe方法,获取已经实例化的事件订阅对象,需要填入的groupId为你的链的群组ID,默认为0.
public EventSubscribe getEventSubscribe(Integer groupId) { return EventSubscribe.build(this.groupManagerService, this.eventResource, groupId); }
十分感谢!可以的话,能再问个问题吗?我现在在利用sendTransactionAndGetResponseByContractLoader方法通过同步方式发送交易,但是我的交易数量一直和我的区块数量相等。尽管我将PBFT共识打包时间的min_block_generation_time设置为1000ms,然后for循环连续发送5次转账(transfer)交易,每个区块里还是只能有1条交易,这是正常的吗?还是我对区块链的知识了解不够?
你可以通过 org.fisco.bcos.sdk.BcosSDK的getEventSubscribe方法,获取已经实例化的事件订阅对象,需要填入的groupId为你的链的群组ID,默认为0.
public EventSubscribe getEventSubscribe(Integer groupId) { return EventSubscribe.build(this.groupManagerService, this.eventResource, groupId); }十分感谢!可以的话,能再问个问题吗?我现在在利用sendTransactionAndGetResponseByContractLoader方法通过同步方式发送交易,但是我的交易数量一直和我的区块数量相等。尽管我将PBFT共识打包时间的min_block_generation_time设置为1000ms,然后for循环连续发送5次转账(transfer)交易,每个区块里还是只能有1条交易,这是正常的吗?还是我对区块链的知识了解不够?
用同步方式上链,当区块落盘了之后才会推送交易结果(因为执行性能足够快,所以延迟无感)。可以用异步上链的接口,高并发多线程发送交易,这样才能给节点足够大的压力,一个区块才能打包多笔交易。可以参考java-sdk-demo的示例。
