java.lang.Object
org.apache.skywalking.oap.server.library.datacarrier.DataCarrier<T>

public class DataCarrier<T> extends Object
DataCarrier main class. use this instance to set Producer/Consumer Model.
  • Constructor Details

    • DataCarrier

      public DataCarrier(int channelSize, int bufferSize)
    • DataCarrier

      public DataCarrier(String name, int channelSize, int bufferSize)
    • DataCarrier

      public DataCarrier(String name, String envPrefix, int channelSize, int bufferSize)
    • DataCarrier

      public DataCarrier(String name, String envPrefix, int channelSize, int bufferSize, BufferStrategy strategy)
    • DataCarrier

      public DataCarrier(int channelSize, int bufferSize, BufferStrategy strategy)
  • Method Details

    • setPartitioner

      public DataCarrier setPartitioner(IDataPartitioner<T> dataPartitioner)
      set a new IDataPartitioner. It will cover the current one or default one.(Default is SimpleRollingPartitioner
      Parameters:
      dataPartitioner - to partition data into different channel by some rules.
      Returns:
      DataCarrier instance for chain
    • produce

      public boolean produce(T data)
      produce data to buffer, using the given BufferStrategy.
      Returns:
      false means produce data failure. The data will not be consumed.
    • consume

      public DataCarrier consume(Class<? extends IConsumer<T>> consumerClass, int num, long consumeCycle, Properties properties)
      set consumeDriver to this Carrier. consumer begin to run when produce(T) begin to work.
      Parameters:
      consumerClass - class of consumer
      num - number of consumer threads
      properties - for initializing consumer.
    • consume

      public DataCarrier consume(Class<? extends IConsumer<T>> consumerClass, int num)
      set consumeDriver to this Carrier. consumer begin to run when produce(T) begin to work with 20 millis consume cycle.
      Parameters:
      consumerClass - class of consumer
      num - number of consumer threads
    • consume

      public DataCarrier consume(IConsumer<T> consumer, int num, long consumeCycle)
      set consumeDriver to this Carrier. consumer begin to run when produce(T) begin to work.
      Parameters:
      consumer - single instance of consumer, all consumer threads will all use this instance.
      num - number of consumer threads
    • consume

      public DataCarrier consume(IConsumer<T> consumer, int num)
      set consumeDriver to this Carrier. consumer begin to run when produce(T) begin to work with 20 millis consume cycle.
      Parameters:
      consumer - single instance of consumer, all consumer threads will all use this instance.
      num - number of consumer threads
    • consume

      public DataCarrier consume(ConsumerPool consumerPool, IConsumer<T> consumer)
      Set a consumer pool to manage the channels of this DataCarrier. Then consumerPool could use its own consuming model to adjust the consumer thread and throughput.
    • shutdownConsumers

      public void shutdownConsumers()
      shutdown all consumer threads, if consumer threads are running. Notice BufferStrategy: if BufferStrategy == BufferStrategy.BLOCKING, shutdown consumeDriver maybe cause blocking when producing. Better way to change consumeDriver are use consume(java.lang.Class<? extends org.apache.skywalking.oap.server.library.datacarrier.consumer.IConsumer<T>>, int, long, java.util.Properties)