use of io.vertx.up.tool.container.RxHod in project vertx-zero by silentbalanceyh.
the class RpcHelper method getRecord.
static Record getRecord(final JsonObject config) {
/**
* Config Verify *
*/
Fn.flingUp(() -> Fn.shuntZero(() -> Ruler.verify(Key.RULE_KEY, config), config), LOGGER);
// Connect remote etcd to check service
final ConcurrentMap<String, Record> registryData = ORIGIN.getRegistryData();
final String name = config.getString(Key.NAME);
final String address = config.getString(Key.ADDR);
LOGGER.debug(Info.RPC_SERVICE, name, address);
// Empty Found
Fn.flingWeb(registryData.values().isEmpty(), LOGGER, _424RpcServiceException.class, RpcHelper.class, name, address);
// Service status checking
final RxHod container = new RxHod();
// Lookup Record instance
Observable.fromIterable(registryData.values()).filter(Objects::nonNull).filter(item -> Ut.notNil(item.getName())).filter(item -> name.equals(item.getName()) && address.equals(item.getMetadata().getString(Key.PATH))).subscribe(container::add);
// Service Not Found
Fn.flingWeb(!container.successed(), LOGGER, _424RpcServiceException.class, RpcHelper.class, name, address);
// Address Not Found
Fn.flingWeb(!container.successed(), LOGGER, _424RpcServiceException.class, RpcHelper.class, name, address);
final Record record = container.get();
LOGGER.debug(Info.RPC_FOUND, record.toJson());
return container.get();
}
Aggregations