
io.numaproj.numaflow.mapstreamer.MapStreamer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of numaflow-java Show documentation
Show all versions of numaflow-java Show documentation
SDK to implement Numaflow Source or User Defined Functions or Sinks in Java.
package io.numaproj.numaflow.mapstreamer;
import com.google.protobuf.ByteString;
import io.grpc.stub.StreamObserver;
import io.numaproj.numaflow.mapstream.v1.Mapstream;
import java.util.ArrayList;
import java.util.List;
/**
* MapStreamer exposes method for performing map streaming operation.
* Implementations should override the processMessage method
* which will be used for processing the input messages
*/
public abstract class MapStreamer {
/**
*
* method which will be used for processing streaming messages.
* stream observer need to be invoked on each message processed.
*
* @param keys message keys
* @param datum current message to be processed
* @param streamObserver stream observer of the response
*/
public abstract void processMessage(String[] keys, Datum datum, StreamObserver streamObserver);
/**
* method will be utilized inside custom processMessage to invoke next on StreamObserver.
*
* @param message message
* @return DatumResponse will be passed on to StreamObserver.
*/
private Mapstream.MapStreamResponse buildDatumResponse(Message message) {
return Mapstream.MapStreamResponse.newBuilder()
.setResult(Mapstream.MapStreamResponse.Result.newBuilder()
.setValue(message.getValue() == null ? ByteString.EMPTY : ByteString.copyFrom(
message.getValue()))
.addAllKeys(message.getKeys()
== null ? new ArrayList<>() : List.of(message.getKeys()))
.addAllTags(message.getTags()
== null ? new ArrayList<>() : List.of(message.getTags()))
.build()).build();
}
/**
* method will be utilized inside custom processMessage to invoke next on StreamObserver.
*
* @param message message
* @param streamObserver stream observer of the response
*/
protected void onNext(Message message, StreamObserver streamObserver) {
streamObserver.onNext(buildDatumResponse(message));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy