使用Java创建Pulsar租户时报Cannot instantiate the type TenantInfo错误
Pulsar创建租户时TenantInfo无法实例化解决方案
报错根因
你当前使用的Pulsar版本中,org.apache.pulsar.common.policies.data.TenantInfo 已经调整为抽象类/接口,不再提供公开的构造方法,因此直接使用new关键字实例化会抛出Cannot instantiate the type TenantInfo错误。
解决方法
使用Pulsar官方提供的Builder模式构建TenantInfo实例即可,调整后的代码如下:
import java.util.HashSet; import org.apache.pulsar.common.policies.data.TenantInfo; // 使用builder模式构造TenantInfo实例 TenantInfo tenantInfo = TenantInfo.builder() .adminRoles(new HashSet<>(adminRoles)) .allowedClusters(new HashSet<>(allowedClusters)) .build(); admin.tenants().createTenant(tenantName, tenantInfo);
如果是仍在使用Pulsar 1.x版本的场景,也可以通过实例化实现类TenantInfoImpl完成创建:
import org.apache.pulsar.common.policies.data.TenantInfoImpl; TenantInfo tenantInfo = new TenantInfoImpl(new HashSet<>(adminRoles),new HashSet<>(allowedClusters));
注:优先使用Builder写法,该写法兼容所有2.x及以上版本的Pulsar Java客户端,避免后续版本升级出现兼容问题。
内容的提问来源于stack exchange,提问作者Pavan Kalyan
相关产品推荐
相关产品推荐

