public final class GenericSystemDescriptor extends SystemDescriptor<GenericSystemDescriptor> implements SimpleInputDescriptorProvider, OutputDescriptorProvider
GenericSystemDescriptor
can be used for specifying Samza and system-specific properties of an
input/output system. It can also be used for obtaining GenericInputDescriptor
s and
GenericOutputDescriptor
s, which can be used for specifying any Samza and system-specific properties
of input/output streams.
If the system provides its own system and stream descriptor implementations, use them instead.
Otherwise, use this GenericSystemDescriptor
to specify Samza-specific properties of the system,
and SystemDescriptor.withSystemConfigs(java.util.Map<java.lang.String, java.lang.String>)
to specify additional system specific properties.
System properties provided in configuration override corresponding properties specified using a descriptor.
Constructor and Description |
---|
GenericSystemDescriptor(java.lang.String systemName,
java.lang.String factoryClassName)
Constructs a
GenericSystemDescriptor instance with no system level serde. |
Modifier and Type | Method and Description |
---|---|
<StreamMessageType> |
getInputDescriptor(java.lang.String streamId,
Serde<StreamMessageType> serde)
Gets an
InputDescriptor for an input stream on this system. |
<StreamMessageType> |
getOutputDescriptor(java.lang.String streamId,
Serde<StreamMessageType> serde)
Gets an
OutputDescriptor representing an output stream on this system that uses the provided
stream specific serde instead of the default system serde. |
getExpander, getSystemName, getTransformer, toConfig, withDefaultStreamConfigs, withDefaultStreamOffsetDefault, withSystemConfigs
public GenericSystemDescriptor(java.lang.String systemName, java.lang.String factoryClassName)
GenericSystemDescriptor
instance with no system level serde.
Serdes must be provided explicitly at stream level when getting input or output descriptors.systemName
- name of this systemfactoryClassName
- name of the SystemFactory class for this systempublic <StreamMessageType> GenericInputDescriptor<StreamMessageType> getInputDescriptor(java.lang.String streamId, Serde<StreamMessageType> serde)
SimpleInputDescriptorProvider
InputDescriptor
for an input stream on this system. The stream has the provided
stream level serde.
The type of messages in the stream is the type of the provided stream level serde.
getInputDescriptor
in interface SimpleInputDescriptorProvider
StreamMessageType
- type of messages in this streamstreamId
- id of the input streamserde
- stream level serde for the input streamInputDescriptor
for the input streampublic <StreamMessageType> GenericOutputDescriptor<StreamMessageType> getOutputDescriptor(java.lang.String streamId, Serde<StreamMessageType> serde)
OutputDescriptorProvider
OutputDescriptor
representing an output stream on this system that uses the provided
stream specific serde instead of the default system serde.
An OutputStream<KV<K, V>>
, obtained using a descriptor with a KVSerde<K, V>
, can send messages
of type KV<K, V>
. An OutputStream<M>
with any other Serde<M>
can send messages of
type M without a key.
A KVSerde<NoOpSerde, NoOpSerde>
or NoOpSerde
may be used if the SystemProducer
serializes the outgoing messages itself, and no prior serialization is required from the framework.
getOutputDescriptor
in interface OutputDescriptorProvider
StreamMessageType
- type of messages in the output streamstreamId
- id of the output streamserde
- serde for this output stream that overrides the default system serde, if any.OutputDescriptor
for the output stream