From 36f93ad7f7bd937c9c70ada8ab531696c6d40dae Mon Sep 17 00:00:00 2001 From: Sergey Tyurin Date: Tue, 6 Oct 2026 16:00:00 -0700 Subject: [PATCH] Support consumer version in ConsumerBuilder --- .gitignore | 1 + src/consumer/Consumer.java | 2 +- src/consumer/ConsumerBuilder.java | 19 ++++++++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index bb1ae3c..ea2aa2f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .ijwb bazel-* MODULE.bazel.lock +.bazelbsp diff --git a/src/consumer/Consumer.java b/src/consumer/Consumer.java index 862e92d..b47cfb5 100644 --- a/src/consumer/Consumer.java +++ b/src/consumer/Consumer.java @@ -42,7 +42,7 @@ public class Consumer extends AbstractService { /** Version of the client library. Should be kept in sync with Go client version. */ - public static final String CLIENT_VERSION = "1.2.4"; + public static final String CLIENT_VERSION = "1.2.5"; private static final Logger LOGGER = LoggerFactory.getLogger(Consumer.class); diff --git a/src/consumer/ConsumerBuilder.java b/src/consumer/ConsumerBuilder.java index f03a61f..494608b 100644 --- a/src/consumer/ConsumerBuilder.java +++ b/src/consumer/ConsumerBuilder.java @@ -41,6 +41,7 @@ public class ConsumerBuilder { private @Nullable Integer capacityLimit; private @Nullable DomainKeyName[] keyNames; private @Nullable BooleanSupplier verbose; + private @Nullable String version; /** * Creates a new builder for a {@link Consumer} with default values. It will use the local IP @@ -134,6 +135,16 @@ public ConsumerBuilder withVerboseLogging(BooleanSupplier verbose) { return this; } + /** + * Sets the consumer version. + * + * @return the builder with the version set + */ + public ConsumerBuilder withVersion(String version) { + this.version = version; + return this; + } + public Consumer build() { var clock = this.clock; if (clock == null) { @@ -155,10 +166,16 @@ public Consumer build() { if (verbose == null) { verbose = () -> false; } + var version = this.version; Function, JoinMessage> registerFactory = (grants) -> { var register = Messages.createRegisterBuilder(instance, service, grants); + if (version != null) { + var md = ClientMessage.Register.Metadata.newBuilder(); + md.setVersion(version); + register.setMetadata(md); + } if (capacityLimit == null && keyNames == null) { return Messages.createRegister(register.build()); } @@ -173,7 +190,7 @@ public Consumer build() { Stream.of(keyNames).map(Object::toString).collect(Collectors.joining(", "))); opts = opts.addAllNames(Stream.of(keyNames).map(DomainKeyName::toProto).toList()); } - register = register.setOptions(opts.build()); + register.setOptions(opts.build()); return Messages.createRegister(register.build()); };