All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.fluo.api.client.FluoClient Maven / Gradle / Ivy

Go to download

This module contains all API code for Apache Fluo. External dependencies should be limited. Any changes to public methods should be avoided. While the API module does not have compile time dependency on fluo-core, you must include fluo-core as a run-time dependency.

There is a newer version: 2.0.0
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
 * agreements. See the NOTICE file distributed with this work for additional information regarding
 * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance with the License. You may obtain a
 * copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package org.apache.fluo.api.client;

import org.apache.fluo.api.config.SimpleConfiguration;
import org.apache.fluo.api.metrics.MetricsReporter;

/**
 * Client interface for Fluo. Fluo clients will have shared resources used by all objects created by
 * the client. Therefore, {@link FluoClient#close()} must called when you are finished using the
 * client.
 *
 * @since 1.0.0
 */
public interface FluoClient extends AutoCloseable {

  /**
   * Creates a {@link LoaderExecutor} for loading data into Fluo. Use within a try-with-resources
   * statement or call {@link LoaderExecutor#close()} when you are finished using it.
   */
  LoaderExecutor newLoaderExecutor();

  /**
   * Creates a {@link Snapshot} for reading data from Fluo. Use within a try-with-resources
   * statement or call {@link Snapshot#close()} when you are finished using it.
   */
  Snapshot newSnapshot();

  /**
   * Creates a {@link Transaction} for reading and writing data to Fluo. Unlike the transactions
   * provided by the {@link Loader} and {@link org.apache.fluo.api.observer.Observer}, users will
   * need to call {@link Transaction#commit()}. Use within a try-with-resources statement or call
   * {@link Transaction#close()} when you are finished.
   *
   * 

* Executing many transactions using this method may be less optimal than using a LoaderExecutor. * When a transaction created via this method is committed and closed, the caller must wait for * data to be persisted. Using a LoaderExecutor, multiple transactions commit processing may be * batched w/o the need to wait for each transaction until the LoaderExecutor is closed. */ Transaction newTransaction(); /** * @return All properties w/ the prefix * {@value org.apache.fluo.api.config.FluoConfiguration#APP_PREFIX} that were set at * initialization time. The configuration returned is a subset of configuration using the * prefix {@value org.apache.fluo.api.config.FluoConfiguration#APP_PREFIX} The reason * these properties are stored and read from zookeeper is to offer a consistent view of * application config across all nodes in the cluster. So there is no need to worry w/ * keeping config files consistent across a cluster. To update this configuration, use * {@link FluoAdmin#updateSharedConfig()}. Changes made to the returned Configuration will * not update Zookeeper. */ SimpleConfiguration getAppConfiguration(); /** * @return A {@link MetricsReporter} that is used to report application metrics */ MetricsReporter getMetricsReporter(); /** * Closes client resources */ @Override void close(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy