Skip to content

Commit 2519708

Browse files
feat: enable compression for publishing (#1360)
* feat: enable compression for publishing This is enabled by default and should save on network usage for clients * feat: enable compression for publishing This is enabled by default and should save on network usage for clients * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 722887e commit 2519708

File tree

3 files changed

+25
-8
lines changed

3 files changed

+25
-8
lines changed

google-cloud-pubsublite/clirr-ignored-differences.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@
2828
<method>*</method>
2929
<to>**</to>
3030
</difference>
31+
<difference>
32+
<differenceType>7006</differenceType>
33+
<className>com/google/cloud/pubsublite/internal/**</className>
34+
<method>*</method>
35+
<to>**</to>
36+
</difference>
3137
<difference>
3238
<differenceType>7009</differenceType>
3339
<className>com/google/cloud/pubsublite/internal/**</className>

google-cloud-pubsublite/src/main/java/com/google/cloud/pubsublite/cloudpubsub/PublisherSettings.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import com.google.api.gax.batching.BatchingSettings;
2424
import com.google.api.gax.core.CredentialsProvider;
25-
import com.google.api.gax.rpc.ApiCallContext;
25+
import com.google.api.gax.grpc.GrpcCallContext;
2626
import com.google.api.gax.rpc.ApiException;
2727
import com.google.api.gax.rpc.StatusCode.Code;
2828
import com.google.auto.value.AutoValue;
@@ -50,6 +50,7 @@
5050
import com.google.common.annotations.VisibleForTesting;
5151
import com.google.protobuf.ByteString;
5252
import com.google.pubsub.v1.PubsubMessage;
53+
import io.grpc.CallOptions;
5354
import java.util.Optional;
5455
import org.threeten.bp.Duration;
5556

@@ -82,11 +83,14 @@ public abstract class PublisherSettings {
8283
abstract BatchingSettings batchingSettings();
8384

8485
/**
85-
* Whether to enable publish idempotence, where the server will ensure that unique messages within
86-
* a single publisher session are stored only once. Default true.
86+
* Whether idempotence is enabled, where the server will ensure that unique messages within a
87+
* single publisher session are stored only once. Default true.
8788
*/
8889
abstract boolean enableIdempotence();
8990

91+
/** Whether request compression is enabled. Default true. */
92+
abstract boolean enableCompression();
93+
9094
/** A provider for credentials. */
9195
abstract CredentialsProvider credentialsProvider();
9296

@@ -115,6 +119,7 @@ public static Builder newBuilder() {
115119
PublisherServiceSettings.defaultCredentialsProviderBuilder().build())
116120
.setBatchingSettings(DEFAULT_BATCHING_SETTINGS)
117121
.setEnableIdempotence(true)
122+
.setEnableCompression(true)
118123
.setUnderlyingBuilder(SinglePartitionPublisherBuilder.newBuilder());
119124
}
120125

@@ -137,11 +142,14 @@ public abstract Builder setMessageTransformer(
137142
public abstract Builder setBatchingSettings(BatchingSettings batchingSettings);
138143

139144
/**
140-
* Whether to enable publish idempotence, where the server will ensure that unique messages
141-
* within a single publisher session are stored only once. Default true.
145+
* Whether idempotence is enabled, where the server will ensure that unique messages within a
146+
* single publisher session are stored only once. Default true.
142147
*/
143148
public abstract Builder setEnableIdempotence(boolean enableIdempotence);
144149

150+
/** Whether request compression is enabled. Default true. */
151+
public abstract Builder setEnableCompression(boolean enableCompression);
152+
145153
/** A provider for credentials. */
146154
public abstract Builder setCredentialsProvider(CredentialsProvider credentialsProvider);
147155

@@ -190,10 +198,14 @@ public com.google.cloud.pubsublite.internal.Publisher<MessageMetadata> newPublis
190198
.setPartition(partition)
191199
.setStreamFactory(
192200
responseStream -> {
193-
ApiCallContext context =
201+
GrpcCallContext context =
194202
getCallContext(
195203
PubsubContext.of(framework()),
196204
RoutingMetadata.of(topicPath(), partition));
205+
if (enableCompression()) {
206+
context =
207+
context.withCallOptions(CallOptions.DEFAULT.withCompression("gzip"));
208+
}
197209
return client.publishCallable().splitCall(responseStream, context);
198210
});
199211
if (enableIdempotence()) {

google-cloud-pubsublite/src/main/java/com/google/cloud/pubsublite/internal/wire/ServiceClients.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.google.api.gax.grpc.ChannelPoolSettings;
2323
import com.google.api.gax.grpc.GrpcCallContext;
2424
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
25-
import com.google.api.gax.rpc.ApiCallContext;
2625
import com.google.api.gax.rpc.ApiException;
2726
import com.google.api.gax.rpc.ClientSettings;
2827
import com.google.api.gax.rpc.TransportChannelProvider;
@@ -70,7 +69,7 @@ Settings addDefaultSettings(CloudRegion target, Builder builder) throws ApiExcep
7069
}
7170
}
7271

73-
public static ApiCallContext getCallContext(
72+
public static GrpcCallContext getCallContext(
7473
PubsubContext context, RoutingMetadata routingMetadata) {
7574
return GrpcCallContext.createDefault()
7675
.withExtraHeaders(

0 commit comments

Comments
 (0)