Interface ProcessorSupplier

All Superinterfaces:
Serializable
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface
public interface ProcessorSupplier
extends Serializable
Factory of Processor instances. Part of the initialization chain as explained on ProcessorMetaSupplier.
Since:
3.0
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Interface Description
    static interface  ProcessorSupplier.Context
    Context passed to the supplier in the init() call.
  • Method Summary

    Modifier and Type Method Description
    default void close​(Throwable error)
    Called after the execution has finished on all members - successfully or not.
    Collection<? extends Processor> get​(int count)
    Called after init(Context) to retrieve instances of Processor that will be used during the execution of the Jet job.
    default void init​(ProcessorSupplier.Context context)
    Called on each cluster member after deserialization.
    static ProcessorSupplier of​(SupplierEx<? extends Processor> processorSupplier)
    Returns a ProcessorSupplier which will delegate to the given Supplier<Processor> to create all Processor instances.
  • Method Details

    • init

      default void init​(@Nonnull ProcessorSupplier.Context context) throws Exception
      Called on each cluster member after deserialization.
      Throws:
      Exception
    • get

      @Nonnull Collection<? extends Processor> get​(int count)
      Called after init(Context) to retrieve instances of Processor that will be used during the execution of the Jet job.
      Parameters:
      count - the number of processor this method is required to create and return. It is equal to ProcessorMetaSupplier.Context.localParallelism().
    • close

      default void close​(@Nullable Throwable error) throws Exception
      Called after the execution has finished on all members - successfully or not. This method will be called after Processor.close() has been called on all available members.

      If the execution was aborted due to a member leaving the cluster, it is called immediately (but not before Processor.close() for local processors). In this case, it can happen that the job is still running on some other member (but not on this member).

      If this method throws an exception, it will be logged and ignored; it won't be reported as a job failure.

      Note: this method can be called even if init() or get() were not called yet in case the job fails during the init phase.

      Parameters:
      error - the exception (if any) that caused the job to fail; null in the case of successful job completion
      Throws:
      Exception
    • of

      @Nonnull static ProcessorSupplier of​(@Nonnull SupplierEx<? extends Processor> processorSupplier)
      Returns a ProcessorSupplier which will delegate to the given Supplier<Processor> to create all Processor instances.