public class BeamFnDataGrpcClient extends java.lang.Object implements BeamFnDataClient
BeamFnDataClient that uses gRPC for sending and receiving data.
TODO: Handle closing clients that are currently not a consumer nor are being consumed.
| Constructor and Description |
|---|
BeamFnDataGrpcClient(org.apache.beam.sdk.options.PipelineOptions options,
java.util.function.Function<org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor,org.apache.beam.vendor.grpc.v1p54p0.io.grpc.ManagedChannel> channelFactory,
org.apache.beam.sdk.fn.stream.OutboundObserverFactory outboundObserverFactory) |
| Modifier and Type | Method and Description |
|---|---|
org.apache.beam.sdk.fn.data.BeamFnDataOutboundAggregator |
createOutboundAggregator(org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor apiServiceDescriptor,
java.util.function.Supplier<java.lang.String> processBundleRequestIdSupplier,
boolean collectElementsIfNoFlushes)
Creates a
BeamFnDataOutboundAggregator for buffering and sending outbound data and
timers over the data plane. |
void |
registerReceiver(java.lang.String instructionId,
java.util.List<org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor> apiServiceDescriptors,
org.apache.beam.sdk.fn.data.CloseableFnDataReceiver<org.apache.beam.model.fnexecution.v1.BeamFnApi.Elements> receiver)
Registers a receiver for the provided instruction id.
|
void |
unregisterReceiver(java.lang.String instructionId,
java.util.List<org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor> apiServiceDescriptors)
Receivers are only expected to be unregistered when bundle processing has completed
successfully.
|
public BeamFnDataGrpcClient(org.apache.beam.sdk.options.PipelineOptions options,
java.util.function.Function<org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor,org.apache.beam.vendor.grpc.v1p54p0.io.grpc.ManagedChannel> channelFactory,
org.apache.beam.sdk.fn.stream.OutboundObserverFactory outboundObserverFactory)
public void registerReceiver(java.lang.String instructionId,
java.util.List<org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor> apiServiceDescriptors,
org.apache.beam.sdk.fn.data.CloseableFnDataReceiver<org.apache.beam.model.fnexecution.v1.BeamFnApi.Elements> receiver)
BeamFnDataClientThe receiver is not required to be thread safe.
Receivers for successfully processed bundles must be unregistered. See BeamFnDataClient.unregisterReceiver(java.lang.String, java.util.List<org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor>) for details.
Any failure during FnDataReceiver.accept(T) will mark the provided instructionId as invalid and will ignore any future data. It is expected that if a bundle
fails during processing then the failure will become visible to the BeamFnDataClient
during a future FnDataReceiver.accept(T) invocation.
registerReceiver in interface BeamFnDataClientpublic void unregisterReceiver(java.lang.String instructionId,
java.util.List<org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor> apiServiceDescriptors)
BeamFnDataClientIt is expected that if a bundle fails during processing then the failure will become visible
to the BeamFnDataClient during a future FnDataReceiver.accept(T) invocation.
unregisterReceiver in interface BeamFnDataClientpublic org.apache.beam.sdk.fn.data.BeamFnDataOutboundAggregator createOutboundAggregator(org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor apiServiceDescriptor,
java.util.function.Supplier<java.lang.String> processBundleRequestIdSupplier,
boolean collectElementsIfNoFlushes)
BeamFnDataClientBeamFnDataOutboundAggregator for buffering and sending outbound data and
timers over the data plane. It is important that BeamFnDataOutboundAggregator.sendOrCollectBufferedDataAndFinishOutboundStreams() is called on
the returned BeamFnDataOutboundAggregator at the end of each bundle. If
collectElementsIfNoFlushes is set to true, BeamFnDataOutboundAggregator.sendOrCollectBufferedDataAndFinishOutboundStreams() returns the
buffered elements instead of sending it through the outbound StreamObserver if there's no
previous flush.
Closing the returned aggregator signals the end of the streams.
The returned aggregator is not thread safe.
createOutboundAggregator in interface BeamFnDataClient