@InterfaceStability.Evolving public interface ApplicationDescriptor<S extends ApplicationDescriptor>
ApplicationDescriptor
contains the description of inputs, outputs, state, configuration and the processing
logic for a SamzaApplication
.
This is the base ApplicationDescriptor
and provides functionality common to all SamzaApplication
.
SamzaApplication.describe(S)
will provide access to a StreamApplicationDescriptor
with additional
functionality for describing High Level API applications. Similarly, SamzaApplication.describe(S)
will provide
access to a TaskApplicationDescriptor
with additional functionality for describing Low Level API
applications.
Use the ApplicationDescriptor
to set the container scope context factory using
withApplicationContainerContextFactory(org.apache.samza.context.ApplicationContainerContextFactory<?>)
, and task scope context factory using
withApplicationTaskContextFactory(org.apache.samza.context.ApplicationTaskContextFactory<?>)
. Please note that the terms container
and
task
here refer to the units of physical and logical parallelism, not the programming API.
Modifier and Type | Method and Description |
---|---|
Config |
getConfig()
Get the configuration for the application.
|
S |
withApplicationContainerContextFactory(ApplicationContainerContextFactory<?> factory)
Sets the
ApplicationContainerContextFactory for this application. |
S |
withApplicationTaskContextFactory(ApplicationTaskContextFactory<?> factory)
Sets the
ApplicationTaskContextFactory for this application. |
S |
withDefaultSystem(SystemDescriptor<?> defaultSystemDescriptor)
Sets the
SystemDescriptor for the default system for the application. |
S |
withMetricsReporterFactories(java.util.Map<java.lang.String,MetricsReporterFactory> reporterFactories)
Sets the
MetricsReporterFactory s for creating the MetricsReporter s to use for the application. |
S |
withProcessorLifecycleListenerFactory(ProcessorLifecycleListenerFactory listenerFactory)
Sets the
ProcessorLifecycleListenerFactory for this application. |
Config getConfig()
S withDefaultSystem(SystemDescriptor<?> defaultSystemDescriptor)
SystemDescriptor
for the default system for the application.
The default system is used by the framework for creating any internal (e.g., coordinator, changelog, checkpoint)
streams. In an StreamApplication
, it is also used for creating any intermediate streams; e.g., those
created by the MessageStream.partitionBy(org.apache.samza.operators.functions.MapFunction<? super M, ? extends K>, org.apache.samza.operators.functions.MapFunction<? super M, ? extends V>, org.apache.samza.serializers.KVSerde<K, V>, java.lang.String)
and MessageStream.broadcast(org.apache.samza.serializers.Serde<M>, java.lang.String)
operators.
If the default system descriptor is set, it must be set before creating any input/output/intermediate streams.
defaultSystemDescriptor
- the SystemDescriptor
for the default system for the applicationApplicationDescriptor
S withApplicationContainerContextFactory(ApplicationContainerContextFactory<?> factory)
ApplicationContainerContextFactory
for this application. Each task will be given access to a
different instance of the ApplicationContainerContext
that this creates. The context can be accessed
through the Context
.
Setting this is optional.
The provided factory
instance must be Serializable
.
factory
- the ApplicationContainerContextFactory
for this applicationApplicationDescriptor
S withApplicationTaskContextFactory(ApplicationTaskContextFactory<?> factory)
ApplicationTaskContextFactory
for this application. Each task will be given access to a different
instance of the ApplicationTaskContext
that this creates. The context can be accessed through the
Context
.
Setting this is optional.
The provided factory
instance must be Serializable
.
factory
- the ApplicationTaskContextFactory
for this applicationApplicationDescriptor
S withProcessorLifecycleListenerFactory(ProcessorLifecycleListenerFactory listenerFactory)
ProcessorLifecycleListenerFactory
for this application.
Setting a ProcessorLifecycleListenerFactory
is optional to a user application. It allows users to plug in
optional code to be invoked in different stages before/after the main processing logic is started/stopped in the
application.
The provided factory
instance must be Serializable
.
listenerFactory
- the user implemented ProcessorLifecycleListenerFactory
that creates lifecycle
listener with callback methods before and after the start/stop of each StreamProcessor in
the applicationApplicationDescriptor
S withMetricsReporterFactories(java.util.Map<java.lang.String,MetricsReporterFactory> reporterFactories)
MetricsReporterFactory
s for creating the MetricsReporter
s to use for the application.
The provided MetricsReporterFactory
instances must be Serializable
.
reporterFactories
- a map of MetricsReporter
names to their factories.ApplicationDescriptor