SAService Architect Back to designer
SAService ArchitectDocumentation
Stream type T → KeyValue<K,V>

KeyBy

Builds an explicitly keyed stream for stateful correlation.

When to use

Use KeyBy before Join or MultiJoin to define how ordinary messages are correlated.

Behavior

  • The generated callback receives T and emits KeyValue<K,V> through its collector.
  • K is described by keyType; V is described by valueType and may preserve or project the input value.
  • The runtime installs keyed serialization and exposes K as stream key metadata.
  • Join and MultiJoin compare declared keyType values across every input.

General properties

Identity, ownership and operator-specific mode.

PropertyTypeDescription
typeTransformationType

Operator kind. It controls available properties, valid sources and generated interfaces.

RequiredAllowed: Input, Map, Filter, Join, MultiJoin, Process, FlatMap, FlatMapIterable, KeyBy, Merge, Split, Case, Sink, CycleLink, Error, Delay, When
namestring

Human-readable stream name shown in the designer and used to derive default generated symbols.

Required
serviceService

Service that owns the stream. Connected streams must belong to the same service.

Required

Connections properties

Upstream graph references accepted by this operator.

PropertyTypeDescription
sourceStream

Single upstream stream. The designer only offers structurally and type-compatible candidates.

Required

Data Types properties

Message contracts visible at this node.

PropertyTypeDescription
keyTypecomparable Type

Key contract K produced by KeyBy. Join storage indexes values with this key, so all inputs of one Join or MultiJoin must use the same keyType.

RequiredDefault: UnknownType
valueTypeType

Output or response message contract. The exact meaning is operator-specific.

RequiredDefault: UnknownType

Function properties

Generated business-logic implementation and its placement.

PropertyTypeDescription
functionNamesymbol

Generated business-logic type or function name.

Required
functionPackagerelative path

Optional placement below the target-language functions root. Leave empty to use that root directly. A value such as folder/sub-folder is relative to the private or public functions root selected by publicFunction; nested-path handling is language-specific and is documented in Code Generation / Packages and Modules.

Default: empty (functions root)
publicFunctionboolean

Places the generated function in a shared package instead of the service-internal package.

Default: false
functionDescriptiontext

Documentation comment emitted with the generated function.

functionInitializerGroupstring

Dependency-injection initialization group for the generated function.

functionModuleModule

Shared module that owns the function.

Visible when publicFunction is true.

Execution properties

Pipeline placement and runtime policy.

PropertyTypeDescription
pipelinestring

Visual and configuration grouping inside the owning service.

Position properties

Designer-only canvas coordinates.

PropertyTypeDescription
xPosnumber

Horizontal designer coordinate. It has no runtime effect.

Required
yPosnumber

Vertical designer coordinate. It has no runtime effect.

Required

Configuration example

type: KeyBy
source: analyticsOrders
keyType: analyticsKey
valueType: analyticsEvent
functionName: KeyOrdersForJoin