@InterfaceStability.Evolving public interface StreamApplicationDescriptor extends ApplicationDescriptor<StreamApplicationDescriptor>
StreamApplicationDescriptor contains the description of inputs, outputs, state, configuration and the
 processing logic for a Samza High Level API StreamApplication.
 
 Use the StreamApplicationDescriptor obtained from SamzaApplication.describe(S) to get the
 MessageStreams, OutputStreams and Tables corresponding to their respective
 InputDescriptors, OutputDescriptors and TableDescriptors.
 
 Use the MessageStream API operators to describe the processing logic for the StreamApplication.
| Modifier and Type | Method and Description | 
|---|---|
| <M> MessageStream<M> | getInputStream(InputDescriptor<M,?> inputDescriptor)Gets the input  MessageStreamcorresponding to theinputDescriptor. | 
| <M> OutputStream<M> | getOutputStream(OutputDescriptor<M,?> outputDescriptor)Gets the  OutputStreamcorresponding to theoutputDescriptor. | 
| <K,V> Table<KV<K,V>> | getTable(TableDescriptor<K,V,?> tableDescriptor)Gets the  Tablecorresponding to theTableDescriptor. | 
getConfig, withApplicationContainerContextFactory, withApplicationTaskContextFactory, withDefaultSystem, withMetricsReporterFactories, withProcessorLifecycleListenerFactory<M> MessageStream<M> getInputStream(InputDescriptor<M,?> inputDescriptor)
MessageStream corresponding to the inputDescriptor.
 
 A MessageStream<KV<K, V>, obtained by calling this method with a descriptor with a KVSerde<K, V>,
 can receive messages of type KV<K, V>. An input MessageStream<M>, obtained using a descriptor with
 any other Serde<M>, can receive messages of type M - the key in the incoming message is ignored.
 
 A KVSerde<NoOpSerde, NoOpSerde> or NoOpSerde may be used for the descriptor if the
 SystemConsumer deserializes the incoming messages itself, and no further deserialization is required from
 the framework.
 
 Multiple invocations of this method with the same inputDescriptor will throw an
 IllegalStateException.
M - the type of messages in the input MessageStreaminputDescriptor - the descriptor for the streamMessageStreamjava.lang.IllegalStateException - when invoked multiple times with the same inputDescriptor<M> OutputStream<M> getOutputStream(OutputDescriptor<M,?> outputDescriptor)
OutputStream corresponding to the outputDescriptor.
 
 An OutputStream<KV<K, V>>, obtained by calling this method with a descriptor with a KVSerde<K, V>,
 can send messages of type KV<K, V>. An OutputStream<M>, obtained using a descriptor with any
 other Serde<M>, can send messages of type M without a key.
 
 A KVSerde<NoOpSerde, NoOpSerde> or NoOpSerde may be used for the descriptor if the
 SystemProducer serializes the outgoing messages itself, and no prior serialization is required from
 the framework.
 
 When sending messages to an OutputStream<KV<K, V>>, messages are partitioned using their serialized key.
 When sending messages to any other OutputStream<M>, messages are partitioned using a null partition key.
 
 Multiple invocations of this method with the same outputDescriptor will throw an
 IllegalStateException.
M - the type of messages in the OutputStreamoutputDescriptor - the descriptor for the streamOutputStreamjava.lang.IllegalStateException - when invoked multiple times with the same outputDescriptor<K,V> Table<KV<K,V>> getTable(TableDescriptor<K,V,?> tableDescriptor)
Table corresponding to the TableDescriptor.
 
 Multiple invocations of this method with the same TableDescriptor will throw an
 IllegalStateException.
K - the type of the keyV - the type of the valuetableDescriptor - the TableDescriptorTable corresponding to the tableDescriptorjava.lang.IllegalStateException - when invoked multiple times with the same TableDescriptor