org.apache.flume.api
Class NettyAvroRpcClient

java.lang.Object
  extended by org.apache.flume.api.AbstractRpcClient
      extended by 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
protected NettyAvroRpcClient()
          This constructor is intended to be called from RpcClientFactory.
 
Method Summary
 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-2012 Apache Software Foundation. All Rights Reserved.