Skip to content

Commit 9c750c8

Browse files
feat: Send streaming pull flow control settings to server (googleapis#267)
* feat: Add flow control support to publisher * make suggested fixes * chore: Remove note that ordering keys requires enablements. * feat: Add support for server-side flow control * Revert "chore: Remove note that ordering keys requires enablements." This reverts commit 9c113c3. * fix: Fix import order
1 parent ddd3283 commit 9c750c8

2 files changed

Lines changed: 8 additions & 0 deletions

File tree

google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/StreamingSubscriberConnection.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.google.api.core.ApiFutureCallback;
2525
import com.google.api.core.ApiFutures;
2626
import com.google.api.core.SettableApiFuture;
27+
import com.google.api.gax.batching.FlowControlSettings;
2728
import com.google.api.gax.batching.FlowController;
2829
import com.google.api.gax.core.Distribution;
2930
import com.google.api.gax.grpc.GrpcCallContext;
@@ -71,6 +72,8 @@ final class StreamingSubscriberConnection extends AbstractApiService implements
7172
private final ScheduledExecutorService systemExecutor;
7273
private final MessageDispatcher messageDispatcher;
7374

75+
private final FlowControlSettings flowControlSettings;
76+
7477
private final AtomicLong channelReconnectBackoffMillis =
7578
new AtomicLong(INITIAL_CHANNEL_RECONNECT_BACKOFF.toMillis());
7679
private final Waiter ackOperationsWaiter = new Waiter();
@@ -93,6 +96,7 @@ public StreamingSubscriberConnection(
9396
Distribution ackLatencyDistribution,
9497
SubscriberStub stub,
9598
int channelAffinity,
99+
FlowControlSettings flowControlSettings,
96100
FlowController flowController,
97101
ScheduledExecutorService executor,
98102
ScheduledExecutorService systemExecutor,
@@ -112,6 +116,7 @@ public StreamingSubscriberConnection(
112116
executor,
113117
systemExecutor,
114118
clock);
119+
this.flowControlSettings = flowControlSettings;
115120
}
116121

117122
@Override
@@ -209,6 +214,8 @@ private void initialize() {
209214
.setSubscription(subscription)
210215
.setStreamAckDeadlineSeconds(60)
211216
.setClientId(clientId)
217+
.setMaxOutstandingMessages(flowControlSettings.getMaxOutstandingElementCount())
218+
.setMaxOutstandingBytes(flowControlSettings.getMaxOutstandingRequestBytes())
212219
.build());
213220

214221
/**

google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Subscriber.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ private void startStreamingConnections() {
332332
ackLatencyDistribution,
333333
subStub,
334334
i,
335+
flowControlSettings,
335336
flowController,
336337
executor,
337338
alarmsExecutor,

0 commit comments

Comments
 (0)