@@ -91,6 +91,7 @@ public class ConsumerConfiguration implements JsonSerializable {
9191 protected final List <String > filterSubjects ;
9292 protected final List <String > priorityGroups ;
9393 protected final PriorityPolicy priorityPolicy ;
94+ protected final Duration priorityTimeout ;
9495
9596 protected ConsumerConfiguration (ConsumerConfiguration cc ) {
9697 this .deliverPolicy = cc .deliverPolicy ;
@@ -124,6 +125,7 @@ protected ConsumerConfiguration(ConsumerConfiguration cc) {
124125 this .filterSubjects = cc .filterSubjects == null ? null : new ArrayList <>(cc .filterSubjects );
125126 this .priorityGroups = cc .priorityGroups == null ? null : new ArrayList <>(cc .priorityGroups );
126127 this .priorityPolicy = cc .priorityPolicy ;
128+ this .priorityTimeout = cc .priorityTimeout ;
127129 }
128130
129131 // For the builder
@@ -165,6 +167,7 @@ protected ConsumerConfiguration(Builder b)
165167
166168 this .priorityGroups = b .priorityGroups ;
167169 this .priorityPolicy = b .priorityPolicy ;
170+ this .priorityTimeout = b .priorityTimeout ;
168171 }
169172
170173 /**
@@ -215,6 +218,8 @@ else if (filterSubjects.size() == 1) {
215218 if (priorityPolicy != null && priorityPolicy != DEFAULT_PRIORITY_POLICY ) {
216219 JsonUtils .addField (sb , PRIORITY_POLICY , priorityPolicy .toString ());
217220 }
221+ JsonUtils .addFieldAsNanos (sb , PRIORITY_TIMEOUT , priorityTimeout );
222+
218223 return endJson (sb ).toString ();
219224 }
220225
@@ -497,14 +502,23 @@ public ZonedDateTime getPauseUntil() {
497502 }
498503
499504 /**
500- * Gets the priority policy of this consumer configuration.
505+ * Gets the priority policy of this consumer configuration. Defaults to PriorityPolicy.None
501506 * @return the priority policy.
502507 */
503508 @ NonNull
504509 public PriorityPolicy getPriorityPolicy () {
505510 return GetOrDefault (priorityPolicy );
506511 }
507512
513+ /**
514+ * For pinned_client priority policy how long before the client times out
515+ * @return the duration
516+ */
517+ @ Nullable
518+ public Duration getPriorityTimeout () {
519+ return priorityTimeout ;
520+ }
521+
508522 /**
509523 * Gets whether deliver policy of this consumer configuration was set or left unset
510524 * @return true if the policy was set, false if the policy was not set
@@ -641,6 +655,14 @@ public boolean priorityPolicyWasSet() {
641655 return priorityPolicy != null ;
642656 }
643657
658+ /**
659+ * Gets whether priority timeout for this consumer configuration was set or left unset
660+ * @return true if the timeout was set, false if the timeout was not set
661+ */
662+ public boolean priorityTimeoutWasSet () {
663+ return priorityTimeout != null ;
664+ }
665+
644666 /**
645667 * Creates a builder for the options.
646668 * @return a publish options builder
@@ -703,6 +725,7 @@ public static class Builder {
703725
704726 private List <String > priorityGroups ;
705727 private PriorityPolicy priorityPolicy ;
728+ private Duration priorityTimeout ;
706729
707730 /**
708731 * Construct the builder
@@ -760,6 +783,7 @@ public Builder(ConsumerConfiguration cc) {
760783 this .priorityGroups = new ArrayList <>(cc .priorityGroups );
761784 }
762785 this .priorityPolicy = cc .priorityPolicy ;
786+ this .priorityTimeout = cc .priorityTimeout ;
763787 }
764788 }
765789
@@ -843,6 +867,7 @@ public Builder jsonValue(JsonValue jsonValue) {
843867
844868 priorityGroups (readOptionalStringList (jsonValue , PRIORITY_GROUPS ));
845869 priorityPolicy (PriorityPolicy .get (readString (jsonValue , PRIORITY_POLICY )));
870+ priorityTimeout (readNanos (jsonValue , PRIORITY_TIMEOUT ));
846871
847872 return this ;
848873 }
@@ -1405,6 +1430,26 @@ public Builder priorityPolicy(PriorityPolicy policy) {
14051430 return this ;
14061431 }
14071432
1433+ /**
1434+ * Sets the priority policy timeout
1435+ * @param priorityTimeout the timeout
1436+ * @return Builder
1437+ */
1438+ public Builder priorityTimeout (Duration priorityTimeout ) {
1439+ this .priorityTimeout = normalize (priorityTimeout );
1440+ return this ;
1441+ }
1442+
1443+ /**
1444+ * Sets the priority policy timeout
1445+ * @param priorityTimeoutMillis the timeout in milliseconds
1446+ * @return Builder
1447+ */
1448+ public Builder priorityTimeout (long priorityTimeoutMillis ) {
1449+ this .priorityTimeout = normalizeDuration (priorityTimeoutMillis );
1450+ return this ;
1451+ }
1452+
14081453 /**
14091454 * Builds the ConsumerConfiguration
14101455 * @return The consumer configuration.
0 commit comments