org.apache.flume.api

## Class NettyAvroRpcClient

- java.lang.Object
- - org.apache.flume.api.AbstractRpcClient
  - - org.apache.flume.api.NettyAvroRpcClient

- All Implemented Interfaces:
    RpcClient

      public class NettyAvroRpcClient
      extends AbstractRpcClient
      implements RpcClient

  Avro/Netty implementation of `RpcClient`. The connections are intended to be opened before clients are given access so that the object cannot ever be in an inconsistent when exposed to users.

- - ### Field Summary

    - ### Fields inherited from class org.apache.flume.api.AbstractRpcClient

      `batchSize, connectTimeout, requestTimeout`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `NettyAvroRpcClient()` This constructor is intended to be called from `RpcClientFactory`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `append(Event event)` Send a single `Event` to the associated Flume source.
    `void` | `appendBatch(List<Event> events)` Send a list of events to the associated Flume source.
    `void` | `close()` Immediately closes the client so that it may no longer be used.
    `void` | `configure(Properties properties)` Configure the actual client using the properties.
    `boolean` | `isActive()` Returns `true` if this object appears to be in a usable state, and it returns `false` if this object is permanently disabled.
    `String` | `toString()`

    - ### Methods inherited from class org.apache.flume.api.AbstractRpcClient

      `getBatchSize`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.apache.flume.api.RpcClient

      `getBatchSize`

- - ### Constructor Detail

    - #### NettyAvroRpcClient

          protected NettyAvroRpcClient()

      This constructor is intended to be called from `RpcClientFactory`. A call to this constructor should be followed by call to configure().

  - ### Method Detail

    - #### close

          public void close()
                     throws FlumeException

      Description copied from interface: `RpcClient`

      Immediately closes the client so that it may no longer be used.

      Note: This method MUST be called by applications when they are done using the RPC client in order to clean up resources.

      Multi-threaded applications may want to gracefully stop making RPC calls before calling close(). Otherwise, they risk getting `EventDeliveryException` thrown from their in-flight calls when the underlying connection is disabled.

      Specified by:
        `close` in interface `RpcClient`
      Specified by:
        `close` in class `AbstractRpcClient`
      Throws:
        `FlumeException`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### append

          public void append(Event event)
                      throws EventDeliveryException

      Description copied from interface: `RpcClient`

      Send a single `Event` to the associated Flume source.

      This method blocks until the RPC returns or until the request times out.

      Note: If this method throws an `EventDeliveryException`, there is no way to recover and the application must invoke `RpcClient.close()` on this object to clean up system resources.

      Specified by:
        `append` in interface `RpcClient`
      Specified by:
        `append` in class `AbstractRpcClient`
      Throws:
        `EventDeliveryException` - when an error prevents event delivery.

    - #### appendBatch

          public void appendBatch(List<Event> events)
                           throws EventDeliveryException

      Description copied from interface: `RpcClient`

      Send a list of events to the associated Flume source.

      This method blocks until the RPC returns or until the request times out.

      It is strongly recommended that the number of events in the List be no more than `RpcClient.getBatchSize()`. If it is more, multiple RPC calls will be required, and the likelihood of duplicate Events being stored will increase.

      Note: If this method throws an `EventDeliveryException`, there is no way to recover and the application must invoke `RpcClient.close()` on this object to clean up system resources.

      Specified by:
        `appendBatch` in interface `RpcClient`
      Specified by:
        `appendBatch` in class `AbstractRpcClient`
      Parameters:
        `events` - List of events to send
      Throws:
        `EventDeliveryException` - when an error prevents event delivery.

    - #### isActive

          public boolean isActive()

      Description copied from interface: `RpcClient`

      Returns `true` if this object appears to be in a usable state, and it returns `false` if this object is permanently disabled.

      If this method returns `false`, an application must call `RpcClient.close()` on this object to clean up system resources.

      Specified by:
        `isActive` in interface `RpcClient`
      Specified by:
        `isActive` in class `AbstractRpcClient`

    - #### configure

          public void configure(Properties properties)
                         throws FlumeException

      Configure the actual client using the properties. `properties` should have at least 2 params:

      `hosts` = alias_for_host

      `alias_for_host` = hostname:port.

      Only the first host is added, rest are discarded.

      Optionally it can also have a

      `batch-size` = batchSize

      Specified by:
        `configure` in class `AbstractRpcClient`
      Parameters:
        `properties` - The properties to instantiate the client with.
      Throws:
        `FlumeException` - if the client can not be configured using this method, or if the client was already configured once.

Copyright © 2009-2016 Apache Software Foundation. All Rights Reserved.